Attenuazione e fattore spotlight (Direct3D 9)

I componenti di illuminazione diffusa e speculare dell'equazione di illuminazione globale contengono termini che descrivono l'attenuazione della luce e il cono di luce. Questi termini sono descritti di seguito.

Attenuazione

L'attenuazione di una luce dipende dal tipo di luce e dalla distanza tra la luce e la posizione del vertice. Per calcolare l'attenuazione, utilizzare una delle equazioni seguenti.

Atten = 1/( att0i + att1i * d + att2i * d²)

Dove:

Parametro Valore predefinito Tipo Descrizione Range
att0i 0,0 FLOAT Fattore di attenuazione costante da 0 a +infinito
att1i 0.0 FLOAT Fattore di attenuazione lineare da 0 a +infinito
att2i 0.0 FLOAT Fattore di attenuazione quadratica da 0 a +infinito
d N/D FLOAT Distanza dalla posizione del vertice alla posizione della luce N/D

 

  • Atten = 1, se la luce è una luce direzionale.
  • Atten = 0, se la distanza tra la luce e il vertice supera l'intervallo della luce.

I valori att0, att1, att2 vengono specificati dai membri Attenuation0, Attenuation1 e Attenuation2 di D3DLIGHT9.

La distanza tra la luce e la posizione del vertice è sempre positiva.

d = | Ldir |

Dove:

Parametro Valore predefinito Tipo Descrizione
Ldir N/D D3DVECTOR Vettore di direzione dalla posizione del vertice alla posizione della luce

 

Se d è maggiore dell'intervallo di luce, ovvero il membro Range di una struttura D3DLIGHT9, Direct3D non esegue ulteriori calcoli di attenuazione e non applica effetti dalla luce al vertice.

Le costanti di attenuazione fungono da coefficienti nella formula: è possibile produrre una varietà di curve di attenuazione apportando semplici regolazioni. È possibile impostare Attenuazione1 su 1,0 per creare una luce che non attenua, ma è ancora limitata per intervallo, oppure è possibile sperimentare con valori diversi per ottenere vari effetti di attenuazione.

L'attenuazione in corrispondenza dell'intervallo massimo della luce non è 0,0. Per evitare che le luci compaiano improvvisamente quando si trovano nell'intervallo di luce, un'applicazione può aumentare l'intervallo di luce. In alternativa, l'applicazione può configurare costanti di attenuazione in modo che il fattore di attenuazione sia vicino a 0,0 nell'intervallo di luce. Il valore di attenuazione viene moltiplicato per i componenti rosso, verde e blu del colore della luce per scalare l'intensità della luce come fattore della distanza che la luce viaggia a un vertice.

Fattore Spotlight

L'equazione seguente specifica il fattore spotlight.

equazione del fattore spotlight

Parametro Valore predefinito Tipo Descrizione Range
rhoi N/D FLOAT coseno(angolo) per i riflettori i N/D
phii 0,0 FLOAT Angolo penumbra dei riflettori i in radianti [thetai, pi)
thetai 0.0 FLOAT Angolo umbra dei riflettori i in radianti [0, pi)
Falloff 0.0 FLOAT Fattore di falloff (-infinity, +infinity)

 

Dove:

rho = norm(Ldcs). norm(Ldir)

e:

Parametro Valore predefinito Tipo Descrizione
Ldcs N/D D3DVECTOR Il negativo della direzione della luce nello spazio della fotocamera
Ldir N/D D3DVECTOR Vettore di direzione dalla posizione del vertice alla posizione della luce

 

Dopo aver calcolato l'attenuazione della luce, Direct3D considera anche gli effetti di luce, se applicabile, l'angolo che la luce riflette da una superficie e la riflessione del materiale corrente per calcolare i componenti diffusi e speculari per quel vertice. Per altre informazioni, vedere SpotLight.

Matematica dell'illuminazione