» 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

~22h ago

Hadasi: ...classic

~1d ago

Hadasi: @welove the videos are still up there https://www.twitch.tv/wirmachenbunt/videos

~1d ago

welovemedia: Big thanks for the stream, will this stay online or be shared as a download for those who could not watch it live?

~1d ago

CeeYaa: Big THX for the daylong streaming - and amazing Project Insights https://www.twitch.tv/videos/412932722

~2d ago

u7angel: twitch livestream vvvv gamma

~3d ago

u7angel: @domj, sure

~3d ago

domj: @u7angel: nice! How about the talk later at 7?

~3d ago

u7angel: vvvv-gamma-presentation will be streamed on twitch, starts 2pm, channel name is vvvv gamma

~3d ago

joreg: vvvv heads in #hamburg #kiel: if you're bored this thursday, please come join us for a workshop and/or talk: vvvv-gamma-presentation

~4d ago

sebescudie: @teckor: maybe ui-plugin ?