Panoramica della luce

Quando si usa l'illuminazione Direct3D, l'utente consente a Direct3D di gestire i dettagli dell'illuminazione. Gli utenti avanzati possono eseguire l'illuminazione autonomamente, se necessario.

Quando l'illuminazione è abilitata, Direct3D calcola il colore di ogni vertice dell'oggetto in base a una combinazione degli elementi seguenti:

  • Texel in una mappa di texture associata.
  • Colori diffusi e speculari al vertice, se specificato.
  • Colore e intensità della luce prodotta dalle sorgenti luminose nella scena o dal livello di luce ambientale della scena.

Il modo in cui si lavora con l'illuminazione e i materiali fa una grande differenza nell'aspetto della scena sottoposta a rendering. I materiali definiscono il modo in cui la luce di riflette su una superficie. I livelli di luce diretta e ambientale definiscono la luce riflessa. È necessario utilizzare materiali per eseguire il rendering di una scena se l'illuminazione è abilitata.

Le luci non sono necessarie per eseguire il rendering di una scena, ma i dettagli in una scena sottoposta a rendering senza luce non sono visibili. Al meglio, il rendering di una scena non illuminata comporta una silhouette degli oggetti nella scena. Questo non è sufficiente per la maggior parte degli scopi.

Luce diretta e luce ambientale

Anche se sia la luce diretta che ambientale illuminano gli oggetti in una scena, sono indipendenti l'uno dall'altro, hanno effetti molto diversi e richiedono di lavorare con loro in modi completamente diversi.

La Luce diretta colpisce direttamente l'oggetto. La luce diretta ha sempre direzione e colore ed è un fattore per gli algoritmi di ombreggiatura, ad esempio l'ombreggiatura Gouraud. Diversi tipi di luci generano luce diretta in modi diversi, creando effetti di attenuazione speciali.

La Luce ambientale è effettivamente ovunque in una scena. La luce ambientale è un livello generale di luce che riempie un'intera scena, indipendentemente dagli oggetti e dalle relative posizioni in tale scena. La luce ambientale non ha posizione o direzione, solo colore e intensità. Ogni luce aggiunge alla luce ambientale complessiva in una scena.

Il colore della luce ambientale assume la forma di un valore RGBA, dove ogni componente è un valore intero compreso tra 0 e 255. A differenza della maggior parte dei valori di colore in Direct3D.

I componenti rosso, verde e blu si combinano per rendere il colore finale della luce ambientale. Il componente alfa controlla la trasparenza del colore. Quando si usa l'accelerazione hardware o l'emulazione RGB, il componente alfa viene ignorato.

Modello di luce Direct3D e natura

In natura, quando la luce viene emessa da una fonte, si riflette su centinaia, se non migliaia o milioni di oggetti prima di raggiungere l'occhio dell'utente. Ogni volta che viene riflessa, alcune luci vengono assorbite da una superficie, alcune sono sparse in direzioni casuali e il resto passa su un'altra superficie o all'occhio dell'utente. Questo processo continua fino a quando la luce non viene ridotta a nulla o un utente percepisce la luce.

Ovviamente, i calcoli necessari per simulare perfettamente il comportamento naturale della luce sono troppo lunghi da usare per la grafica Direct3D in tempo reale. Pertanto, tenendo presente la velocità, il modello di luce Direct3D approssima il funzionamento della luce nel mondo naturale. Direct3D descrive la luce in termini di componenti rosso, verde e blu che si combinano per creare un colore finale.

In Direct3D, quando la luce riflette una superficie, il colore della luce interagisce matematicamente con la superficie stessa per creare il colore visualizzato alla fine sullo schermo. Per informazioni specifiche sugli algoritmi usati da Direct3D, vedere Matematica dell'illuminazione.

Il modello di luce Direct3D generalizza la luce in due tipi: luce ambientale e luce diretta. Ognuno ha attributi diversi e ognuno interagisce con il materiale di una superficie in modi diversi. La luce ambientale è la luce che è stata dispersa a tal punto che la sua direzione e la sua sorgente sono indeterminate: mantiene ovunque un basso livello di intensità. L'illuminazione indiretta utilizzata dai fotografi è un buon esempio di luce ambientale.

La luce ambientale in Direct3D, come in natura, non ha direzione o fonte reale, solo un colore e un'intensità. Infatti, il livello di luce ambientale è completamente indipendente da qualsiasi oggetto in una scena che genera luce. La luce ambientale non contribuisce alla riflessione speculare.

La luce diretta è la luce generata da una sorgente all'interno di una scena; ha sempre colore e intensità, e viaggia in una direzione specificata. La luce diretta interagisce con il materiale di una superficie per creare evidenziazioni speculari e la sua direzione viene usata come fattore negli algoritmi di ombreggiatura, tra cui l'ombreggiatura Gouraud. Quando la luce diretta viene riflessa, non contribuisce al livello di luce ambientale in una scena. Le sorgenti in una scena che generano luce diretta hanno caratteristiche diverse che influiscono sul modo in cui illuminano una scena.

Inoltre, il materiale di un poligono ha proprietà che influiscono sul modo in cui il poligono riflette la luce ricevuta. Si imposta un singolo tratto di riflessione che descrive il modo in cui il materiale riflette la luce ambientale e si impostano i singoli tratti per determinare la riflessione speculare e diffusa del materiale.

Valori di colore per luci e materiali

Direct3D descrive il colore in termini di quattro componenti (rosso, verde, blu e alfa) che combinano per creare un colore finale. Ogni componente varia da 0,0 a 1,0. Anche se sia le luci che i materiali utilizzano la stessa struttura per descrivere il colore, i valori vengono utilizzati in modo leggermente diverso dalle luci rispetto ai materiali.

I valori di colore per le sorgenti luminose rappresentano la quantità di un particolare componente di luce generato. Poiché le luci non usano un componente alfa, sono rilevanti solo i componenti rosso, verde e blu del colore. È possibile visualizzare i tre componenti come lenti rosse, verdi e blu su un televisore di proiezione. Ogni obiettivo potrebbe essere disattivato (un valore 0,0 nel membro appropriato), potrebbe essere il più luminoso possibile (valore 1,0) o potrebbe essere una via di mezzo.

I colori che passano attraverso gli obiettivi si combinano per rendere il colore finale della luce. Una combinazione come R(1.0), G(1.0), B(1.0) crea una luce bianca, dove R(0.0), G(0.0), B(0.0) non emette affatto luce. È possibile fare una luce che emette un solo componente, causando una pura luce rossa, verde o blu; o, la luce potrebbe usare combinazioni per emettere colori come giallo o viola. È anche possibile impostare i valori dei componenti di colore negativi per creare una "luce scura" che rimuove effettivamente la luce da una scena. In alternativa, è possibile impostare i componenti su un valore maggiore di 1,0 per creare una luce estremamente luminosa.

Con i materiali, d'altra parte, i valori di colore rappresentano la quantità di un componente di luce riflessa da una superficie di cui viene eseguito il rendering con tale materiale. Un materiale i cui componenti di colore sono R(1.0), G(1.0), B(1.0), A(1.0) riflette tutta la luce che arriva. Analogamente, un materiale con R(0.0), G(1.0), B(0.0), A(1.0) riflette tutta la luce verde diretta. I materiali hanno più valori di riflessione per creare vari tipi di effetti.

Vedere Tipi di luce e Proprietà della luce.

Luci e materiali