Tipi di luce

La proprietà del tipo di luce definisce il tipo di sorgente luminosa in uso. Esistono tre tipi di luci in Direct3D: luci puntiformi, riflettori e luci direzionali. Ogni tipo illumina gli oggetti in una scena in modo diverso, con diversi livelli di overhead di calcolo.

Luce puntiforme

Le luci puntiformi hanno colore e posizione all'interno di una scena, ma nessuna direzione singola. Forniscono luce equamente in tutte le direzioni, come illustrato nella figura seguente.

illustration of point light

Una lampadina è un buon esempio di luce puntiforme. Le luci puntiformi sono influenzate da attenuazione e intervallo e illuminano una mesh su base vertice per vertice. Durante l'illuminazione, Direct3D usa la posizione della luce puntiforme nello spazio globale e le coordinate del vertice illuminato per ricavare un vettore per la direzione della luce e la distanza percorsa dalla luce. Entrambi vengono utilizzati, insieme al vertice normale, per calcolare il contributo della luce all'illuminazione della superficie.

Directional Light

Le luci direzionali hanno solo colore e direzione, non posizione. Emettono luce parallela. Ciò significa che tutta la luce generata dalle luci direzionali viaggia attraverso una scena nella stessa direzione. Immagina una luce direzionale come sorgente luminosa a distanza quasi infinita, ad esempio il sole. Le luci direzionali non sono influenzate dall'attenuazione o dall'intervallo, quindi la direzione e il colore specificati sono gli unici fattori considerati quando Direct3D calcola i colori dei vertici. A causa del numero ridotto di fattori di illuminazione, si tratta delle luci meno a elevato utilizzo di calcolo da usare.

SpotLight

I riflettori hanno colore, posizione e direzione in cui generano luce. La luce emessa da un riflettore è costituita da un cono interno luminoso e un cono esterno più grande, con l'intensità della luce che diminuisce tra i due, come illustrato nella figura seguente.

illustration of a spotlight with an inner cone and an outer cone

I riflettori sono interessati da riduzione, attenuazione e intervallo. Questi fattori, così come la distanza di luce viaggiano a ogni vertice, vengono calcolati quando si calcolano effetti di illuminazione per gli oggetti in una scena. L'elaborazione di questi effetti per ogni vertice rende i riflettori i più impegnativi dal punto di vista computazionale di tutte le luci in Direct3D.

I valori Riduzione, Theta e Phi vengono usati solo dai riflettori. Tali valori controllano quanto sono grandi o piccoli i coni interni ed esterni di un riflettore e come la luce diminuisce tra loro.

Theta è l'angolo radiante del cono interno del riflettore e il valore Phi è l'angolo per il cono esterno della luce. Riduzione controlla il modo in cui l'intensità della luce diminuisce tra il bordo esterno del cono interno e il bordo interno del cono esterno. La maggior parte delle applicazioni imposta Riduzione su 1.0 per creare una riduzione che si verifica in modo uniforme tra i due coni, ma è possibile impostare altri valori in base alle esigenze.

La figura seguente mostra la relazione tra questi valori e il modo in cui possono influire sui coni interni ed esterni di luce di un riflettore.

illustration of how the phi and theta values relate to the spotlight cones

Le luci Spotlight generano un cono di luce che consta di due parti: un cono interno luminoso e un cono esterno. La luce è più luminosa nel cono interno e non è presente all'esterno del cono esterno, con intensità di luce attenuante tra le due aree. Questo tipo di attenuazione è comunemente definito come riduzione.

La quantità di luce ricevuta da un vertice si basa sulla posizione del vertice nei coni interni o esterni. Direct3D calcola il prodotto punto del vettore di direzione (L) del riflettore e il vettore dalla luce al vertice (D). Questo valore è uguale al coseno dell'angolo tra i due vettori e funge da indicatore della posizione del vertice che può essere confrontato con gli angoli del cono della luce per determinare dove il vertice potrebbe trovarsi nei coni interni o esterni. La figura seguente fornisce una rappresentazione grafica dell'associazione tra questi due vettori.

illustration of the spotlight direction vector and the vector from the vertex to the spotlight

Il sistema confronta questo valore con il coseno degli angoli interni ed esterni del cono. I valori Theta e Phi della luce rappresentano gli angoli totali del cono per i coni interni ed esterni. Poiché l'attenuazione si verifica quando il vertice diventa più lontano dal centro di illuminazione (anziché attraverso l'angolo totale del cono), il runtime divide questi angoli di cono in metà prima di calcolare i loro coseni.

Se il prodotto scalare dei vettori L e D è minore o uguale al coseno dell'angolo del cono esterno, il vertice si trova oltre il cono esterno e non riceve luce. Se il prodotto scalare di L e D è maggiore del coseno dell'angolo del cono interno, il vertice si trova all'interno del cono interno e riceve la quantità massima di luce, considerando comunque l'attenuazione sulla distanza. Se il vertice è da qualche parte tra le due aree, la riduzione viene calcolata con l'equazione seguente.

formula for light intensity at vertex, after falloff

dove:

  • If è l'intensità della luce dopo la riduzione
  • Alfa è l'angolo tra vettori L e D
  • Theta è l'angolo del cono interno
  • Phi è l'angolo del cono esterno
  • p è la riduzione

Questa formula genera un valore compreso tra 0,0 e 1,0 che ridimensiona l'intensità della luce al vertice in modo da tenere conto della riduzione. Viene applicata anche l'attenuazione come fattore della distanza del vertice dalla luce. Il grafico seguente mostra come i diversi valori di riduzione possono influire sulla curva di riduzione.

graph of light intensity versus the vertex distance from the light

L'effetto di vari valori di riduzione sull'illuminazione effettiva è sottile e si verifica una piccola carenza in termini di prestazioni modellando la curva di riduzione con valori di riduzione diversi da 1,0. Per questi motivi, questo valore viene in genere impostato su 1,0.

Luci e materiali