» 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

~5d ago

~8d ago

joreg: The Winter Season of vvvv workshops is now over but all recordings are still available for purchase: https://thenodeinstitute.org/ws23-vvvv-intermediates/

~14d ago

schlonzo: Love the new drag and drop functionality for links in latest previews!

~22d ago

joreg: Workshop on 29 02: Create Sequencers and Precise Clock Based Tools. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-08-create-sequencers-and-precise-clock-based-tools-in-vvvv-gamma/

~29d ago

joreg: Workshop on 22 02: Unlocking Shader Artistry: A Journey through ‘The Book of Shaders’ with FUSE. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-12-book-of-shaders/

~1mth ago

joreg: Talk and Workshop on February 15 & 16 in Frankfurt: https://visualprogramming.net/blog/vvvv-at-node-code-frankfurt/

~1mth ago

woei: @Joanie_AntiVJ: think so, looks doable

~1mth ago

xd_nitro: Anyone remember who increased projector brightness by removing some components that product the color?

~1mth ago

Joanie_AntiVJ: This looks super interesting (vectors over network) would anyone here know how to implement this in beta? https://github.com/madmappersoftware/Ponk