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

it.EX9.Effect.Template

English | French | Spanish

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.

Quando si comincia a generare un nuovo effetto è spesso utile cominciare da uno esistente. Nella categoria EX9.Effect si può trovare il nodo Template-(Ex9.Effect), che è un buon punto di partenza. Clonatelo con Ctrl+Invio o Ctrl+clic. Il modello, template, ha già una l'intera struttura di un effetto sotto forma di codice ed include il constant shading con un texturing semplice.

La template è strutturata in 4 sezioni:

  • Parametri
  • VertexShader
  • PixelShader
  • Tecniche

Parametri

Nella sezione parametri vengono prima dichiarate le matrici di trasformazione più comuni tramite la semantica. Solo la variabile tW, che viene dichiarata con la semantica WORLD, appare come pin sul nodo. Le semantiche VIEW e PROJECTION dichiarano rispettivamente le matrici tV e tP, e generano il pin View Transform ed il pin Projection Transform da connettere al nodo Renderer (EX9).

Poi dichiara una texture ed un campionatore, al quale la texture è assegnata. L'ultimo parametro è la matrice di trasformazione della texture.

Per ciascun effetto deve essere specificato quale dato si vuole in uscita (output) dal VertexShader e che sia ricevuto (input) come parametro dal PixelShader. Questo si ottiene nella maniera più conveniente tramite una struttura come questa:

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

Tenere presente che questa struttura è usata come parametro di ritorno per la funzione VertexShader:

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

ed anche come parametro input per la funzione PixelShader:

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

Usare queste strutture non è obbligatorio; inoltre si possono aggiungere parametri addizionali nella funzione PixelShader.

In questo semplice caso la struttura trasporta solo due valori: la posizione e le coordinate vettoriali della texture. Per ottenere un effetto realistico, è verosimilmente necessario far passare più informazioni dal VertexShader verso il PixelShader.

VertexShader

La template della funzione VertexShader contiene una semplice struttura in output con l'attuale posizione dei vertici nel sistema di riferimento proiezione:

 Out.Pos = mul(PosO, tWVP);

e le attuali coordinate della texture del vertice, trasformate dalla matrice di trasformazione della texture in input:

 Out.TexCd = mul(TexCd, tTex);

PixelShader

La funzione PixelShader è ancora più semplice: riceve le coordinate della texture per un certo pixel ed anche le informazioni sul colore su quel pixel dal campionatore Samp, e le ritrasmette.

Tecniche

Il modello effetto specifica due tecniche: la principale, più usata e figa è TSimplShader, che utilizza le funzioni dello shader. L'altra, oltre ad essere noiosa ed ad utilizzare solo istruzioni a funzione fissa, probabilmente non sarà nemmeno necessario usarla.

anonymous user login

Shoutbox

~1d ago

joreg: reminder: this wednesday #vvvv meetup nr 8 in #berlin 8-berlin-vvvv-meetup

~2d ago

metrowave: Yes, thanks for the streamming.

~4d ago

Hadasi: ...classic

~4d ago

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

~4d 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?

~4d ago

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

~5d ago

u7angel: twitch livestream vvvv gamma

~6d ago

u7angel: @domj, sure

~6d ago

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

~6d ago

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