PerPixelLighting senza Normal Map
Nonostante perda gran parte, dell'interesse la perPixelLighting può essere effettuata anche senza una mappa normale, ma sfruttando le normali della mesh. Si perde la gestione del rilievo ma se non serve si ha comunque un miglioramento incredibile dell'illuminazione. La normale luce infatti viene per dire rovinata dal fatto che il calcolo è preciso solo nel vertice mentre il risultato è interpolato nel triangolo. Se non ci sono molti poligoni il modello mostra tutta la sua "triangolatura". Con la perPixelLighting anche un modello con pochi poligoni mostra una illuminazione assolutamente perfetta e pulita come potete vedere. Lo shader usato genera nel vertex shader la posizione del vertice e 4 coordinate texture di cui le prime 3 formate da float3. La prima conterrà le normali La seconda la luce con una correzione per invertire la direzione lungo Y La terza la posizione del vertice La quarta le normali texture Le normali e la posizione viene trasformata nello spazio worldView (moltiplicazione per la matrice WorldView) Il pixel shader calcola l'illuminazione in base alle normali regole di illuminazione ma il calcolo è fatto nel pixel shader.
VB.Net 2003 o framework 1.1
linguaggio usato: HLSL
requisiti hardware: VS_2_0, PS_2_0
funziona anche in reference
PerPixelLightingWN.zip 193Kb
|