5.1. Emisferica

5
Il tuo voto: Nessuno Media: 5 (1 vote)

Questo tipo di sorgente luminosa si adatta molto bene ad un utilizzo in scene, anche complesse, che rappresentano delle zone all'aperto. A queste condizioni può sostituire con notevole efficacia la componente ambientale che abbiamo visto nella sezione dedicata ai materiali.

La sua efficacia è dovuta alla semplicità dell'equazione che la descrive, dove l'unico parametro che ne influenza il comportamento è la direzione del vettore normale di un dato punto di una geometria. Il coseno dell'angolo tra questa normale e l'inverso del vettore che specifica la direzione da cui proviene l'illuminazione rappresenta l'intensità.

intensità = normale · direzioneSorgente

L'intensità ora calcolata può essere utilizzata in due modi: moltiplicata con il colore della sorgente luminosa oppure utilizzata come riferimento per interpolare due colori che rappresentino ad esempio il colore del cielo e quello del terreno.

  // Intensità della luce direzionale
  float sphe = saturate(dot(NormalVec, -lightDir));
  // Interpolazione tra i colori del terreno e del cielo
  float4 color = lerp(ground, sky, sphe);

Risultato dell'implementazione:

Questo tipo di sorgente luminosa applicata congiuntamente con una di tipo direzionale offre ottimi risultati nel rendering di scene d'esterni; in questo caso la luce direzionale rappresenta l'illuminazione proveniente dal sole, mentre quella emisferica l'illuminazione proveniente dal cielo.