» 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

~4d ago

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