» EX9.Plantilla.Efecto
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

EX9.Plantilla.Efecto

English | French | Italian

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

Para empezar a crear un nuevo efecto es útil trabajar a partir de uno ya existente. En la categoría de nodo EX9.Effect está la plantilla (EX9.Effect) que es un buen punto de partida. Clónalo a través de Ctrl + Enter o Ctrl + clic en el NodeBrowser. La plantilla contiene la estructura completa de un efecto distribuida como código e implementa las más básicas vertex- y pixel-shader. De hecho, es como un Constant (Ex9 effect) con un textura.

La plantilla está estructurada en 4 secciones:

  • Parámetros
  • VertexShader
  • PixelShader
  • Técnicas

Parámetros

En esta sección primero se declaran las matrices de transformación más utilizadas a través de la semántica semantics. Ten en cuenta que la variable tW que se declara con la semántica WORLD aparece como pin en el efecto, mientras que las otras transformaciones no. La semántica VIEW y PROJECTION asigna las matrices tV y tP conectadas al Renderer (EX9)a través de sus pin View Transform y Projection Transform respectivamente

A continuación se declara una textura y un sampler, que tiene esta textura asignada. El último parámetro es la matriz de transformación textura.

Para todos los efectos, también hay que especificar qué datos quieres que salgan desde el vertex shader para ser recibidos como parámetros en el pixel shader. Esto se realiza más convenientemente a través de la estructura:

struct vs2ps
{
    float4 Pos  : POSITION;
    float2 TexCd : TEXCOORD0;
};

Ten en cuenta que esta misma estructura se usa como parámetro de vuelta en la función del vertexshader:

 vs2ps VS(float4 PosO  : POSITION, float4 TexCd : TEXCOORD0)
 {..}

y también como parámetro de entrada en la función pixelshader:

 float4 PS(vs2ps In): COLOR
 {..}

Usar struct como aquí no es obligatorio. Además de struct puedes añadir parámetros adicionales en la función pixelshader como quieras.

En esta plantilla la estructura sólo tiene dos valores: la posición y los vectores de coordenadas de textura. En un efecto “real” seguramente se querrá pasar más información desde el vertex shader hacia el pixelshader.

VertexShader

La función vertexshader de la plantilla no hace mucho. Sólo llena la estructura de salida con la posición de vértice actual en el espacio de proyección:

 Out.Pos = mul(PosO, tWVP);

y sustituye las coordenadas textura de los vértices por el valor transformado a través de la matriz de transformación de la textura de entrada:

 Out.TexCd = mul(TexCd, tTex);

PixelShader

La función pixelshader function es aun más simple. Recoge las coordenadas de textura entrantes para ese pixel y obtiene el color de la muestra Samp en esa posición y lo devuelve.

Techniques

La plantilla effects especifica dos técnicas: TSimplShader es la buena, utiliza las funciones del shader. La otra es tediosa, usa sólo instrucciones de función fija, que lo más probable es que no vas a necesitar.

anonymous user login

Shoutbox

~5h ago

joreg: Rewatch the 24th vvvvorldwide meetup here: https://www.youtube.com/live/gNszIiRAjDo?si=0RXF0pW73EUaRqGk

~6h ago

joreg: LINK - the vvvv summer camp 2024 is announced: https://visualprogramming.net/blog/2024/link-the-vvvv-summer-camp-24/

~2d ago

joreg: Tonight, May 3, vvvv meetup in Berlin or via stream: https://visualprogramming.net/blog/2024/24.-vvvv-worldwide-meetup/

~6d ago

joreg: Workshop on 02 05: Intro to the Stride 3D Engine. Signup here: https://thenodeinstitute.org/courses/ss24-vvvv-intro-to-the-stride-3d-engine-in-vvvv/

~7d ago

joreg: The new vvvv Show-Off-Reel is out: https://vimeo.com/930568091

~13d ago

joreg: The summer season of vvvv workshops at The NODE Institute is out: https://thenodeinstitute.org/ss24-vvvv-intermediates/

~13d ago

domj: If you happen to be in Prague, come join us at the Schema workshop on Thursday 25.4. :) https://www.facebook.com/events/395516526614988/?ti=ls

~25d ago

joreg: Postponed: Next vvvv beginner course starting April 29: https://thenodeinstitute.org/courses/vvvv-beginner-class-summer-2024/