notJustCode.it
 
\\ Home : Articoli
Luci Speculari
Di robydx (del 13/05/2007 @ 10:50:33, in Direct3D10, linkato 1744 volte)

Passiamo ora ad un nuovo modello di illuminazione, il Phong , quello di default per le vecchie DirectX (con la differenza però che noi calcoliamo tutto nel pixel shader evitando i difetti dell'interpolazione lineare ed ottenendo una qualità molto più elevata).

Il modello di illuminazione phong riprende il modello lambertian inserendo però l'effetto speculare (il bagliore delle auto è un esempio di specular).

La luce speculare dipende sia dall'oggetto, attraverso le normali, sia dalla posizione dell' osservatore.

La formula di illuminazione è la seguente 

 

Float4 D= lightDiffuseColor *  dot(N,-L);

float3 V=normalize(eyePosition - vertexPosition);

float3 R=normalize(2.0F * N * dot( N, L) - L);

float4 S= lightSpecularColor * pow(max(0.0F,dot(R,V)),power);

Float4 finalColor = A + MaterialDiffuseColor *  D + MaterialSpecularColor * S; 

  • D è la diffuse light, calcolata come nel precedente tutorial.
  • L è la direzione della luce
  • V è il vettore EyeDirection che si ottiene come direzione tra la posizione della telecamera e quella del vertice
  • R è il vettore riflessione
  • S è la specular light che si ottiene elevando a potenza il prodotto fattoriale tra R e V. L'esponziale è il valore scalare power, che definisce l'intensità.
  • A è la luce ambientale, ossia un incremento nel valore per simulare la presenza di luce diffusa
  • MaterialDiffuseColor e MaterialSpecularColor sono i colori che l'oggetto emetto a contatto con la luce diffuse e specular

 

La somma tra la luce ambientale, diffusa e speculare è la phong light, probabilmente il modello di illuminazione più diffuso.

Notare infine che in caso di più sorgenti luminose il valore D ed il valore S sono le somme dei medesimi valori calcolati singolarmente per ogni sorgente.

Vi lascio al demo

 

Demo

Articolo Articolo  Storico Storico Stampa Stampa
I commenti sono disabilitati.
"Ciò che veramente mi interessa è se Dio avesse potuto fare il mondo in una maniera differente, cioè se la necessità di semplicità logica lasci qualche libertà."

Albert Einstein


Cerca per parola chiave
 

Titolo
Articoli (4)
C++ (4)
Direct3D10 (30)
Direct3D11 (20)
DirectX9 (82)
DotNet (10)
English (9)
FanGames (22)
ManagedDX11 (2)
Materiale Utile (4)
News (39)
Shader Library (12)
SharpDX (1)
Software (25)
Tecnologia (19)
Varie (9)

Gli interventi più cliccati

Ultimi commenti:
If you wish to retai...
23/05/2013 @ 13:07:45
Di chanel outlet
You deficit of self-...
23/05/2013 @ 13:07:13
Di cartier watches uk
Reinforce your own l...
23/05/2013 @ 13:06:37
Di replica watches
Whenever you"re shiv...
23/05/2013 @ 13:06:11
Di swiss replica watches
It's likely you have...
23/05/2013 @ 13:05:02
Di chanel handbags
Cheap automobile ins...
23/05/2013 @ 13:04:28
Di replica watches

Titolo
Con quale tecnologia state realizzando o avete intenzione di realizzare i vostri progetti?

 DirectX11
 DirectX10
 DirectX9
 XNA
 DirectX8 o Precedenti
 OpenGL
 Motori grafici già pronti
 Altro

Titolo
Umorismo (17)

Le fotografie più cliccate



Ci sono 169 persone collegate
Sono state visualizzate  pagine

27/07/2024 @ 04:57:33
script eseguito in 41 ms