» 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

~3d ago

cznickesz: @tonfilm thanks for the info. Can´t wait to give it a try!

~4d ago

tonfilm: @cznickesz #vvvv #vl #xenko integration is not ready for the public yet, it's still under heavy development... more updates soon.

~4d ago

cznickesz: Possibly dumb question: is there any release containing xenko-integration right now?

~5d ago

~5d ago

~7d ago

joreg: looking for latest #vvvv gamma preview? it is here: vvvv-gamma-2019.1-preview

~7d ago

udo2013: I just want to know why the camera does not work. should be easy to be answered.

~7d ago

udo2013: an answer, please. also there was a 4d julia set in dx9. that must have programmed one. haalllooo!!

~7d ago

udo2013: where are the people who have translated shadertoy's mandelbulb in hlsl ?? for vvvv