» 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

~4d ago

NoseBleedIndustries: Please, integration with this low cost mechanical display, so beautiful! https://www.vestaboard.com/

~4d ago

NoseBleedIndustries: Please, integration with this low cost mechanical display, so beautiful! https://www.vestaboard.com/

~8d ago

joreg: @mediadog they are here: workshop-videotracking-node10

~9d ago

mediadog: Hmmm slides for node10 video tracking cannot be found: workshop-videotracking-slides

~10d ago

joreg: @mediadog thanks for the pointer, links are updated

~11d ago

mediadog: Where are the 50beta42 offline instalers? The offline installers are still linked to 41, not 42.

~14d ago

id144: thanks @gegenlicht & @bjoern, i hope the festival sorted it.

~16d ago

Patxi7: @joreg done