» 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

ravazquez: Just your regular hungarian folk dance shellsort: https://youtu.be/CmPA7zE8mx0

~2d ago

joreg: Reminder: This thursday in #berlin: free introductory workshop to the all new #vvvv gamma: https://nodeforum.org/announcements/series-of-free-2h-introduction-workshop-to-vvvv-gamma/ #visualprogramming

~4d ago

evvvvil: My refracted brutalism shader... Sucking sweet refracted milk off the tits of schlick fresneled reflections. https://www.shadertoy.com/view/wt33RN

~5d ago

io: @sinao build the cube in a 3d editor soft such as Blender and do the UV mapping there

~6d ago

sinao: one side

~6d ago

sinao: How to apply texture only on one of a cube?

~6d ago

tonfilm: Just updated the CraftLie rendering pack to latest: craftlie-dx11-drawing-for-vl

~10d ago

microdee: 2 seconds later: I asked before googling, but why do you need OS support for texture compression?