» 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

~11h ago

~3d ago

joreg: Two #vvvv workshops this week in #berlin: Friday: Physical Computing, Saturday: Computer Vision. Tickets: upcoming-full-day-vvvv-gamma-workshops-in-berlin

~3d ago

joreg: @cznickesz also feel free to join our chat for such questions: chat

~3d ago

cznickesz: @joreg: Yeah, I´ll give it a try! Thx

~3d ago

joreg: @cznickesz: we're hoping this week. but depends on feedback. please test your project and let us know if it works.

~3d ago

cznickesz: @joreg: I should stop asking my questions so cryptic ;-) So right away: is final Beta39 hours, days or weeks away?

~3d ago

joreg: @cznickesz: the idea of an RC is exactly to make sure your projects will work with it. your last chance to report problems with b39.

~3d ago

cznickesz: So how "RC" is the "RC3"? I have to update an old project soon and I´m wondering if I should wait and directly update to Beta39

~4d ago

joreg: @takuma, the "one frame" issue was fixed in RC3 for beta39, see: beta39-release-candidate

~4d ago

Takuma: @joreg thank!! Ill try this. Are there a way to send video texture from vvvv to vl? fromimage node in vl somehow only sends 1 frame