Atténuation et facteur de point lumineux

Les composants d’éclairage diffus et spéculaire de l’équation d’éclairage global contiennent des termes qui décrivent l’atténuation de la lumière et le cône de projecteur. Ces termes sont décrits ci-dessous.

Atténuation

L’atténuation d’une lumière dépend du type de lumière et de la distance entre la lumière et la position du sommet. Pour calculer l’atténuation, utilisez l’une des équations suivantes.

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

Où :

Paramètre Valeur par défaut Type Description Plage
att0i 0.0 Virgule flottante Facteur d’atténuation constant 0 à +infini
att1i 0.0 Virgule flottante Facteur d’atténuation linéaire 0 à +infini
att2i 0.0 Virgule flottante Facteur d’atténuation quadratique 0 à +infini
d N/A Virgule flottante Distance entre la position du sommet et la position de lumière N/A

 

  • Atten = 1, si la lumière est une lumière directionnelle.
  • Atten = 0, si la distance entre la lumière et le sommet dépasse la plage de la lumière.

La distance entre la lumière et la position du sommet est toujours positive.

d = | Ldir |

Où :

Paramètre Valeur par défaut Type Description
Ldir N/A Vecteur 3D avec des valeurs à virgule flottante x, y et z Vecteur de direction de la position de vertex à la position de lumière

 

Si d est supérieur à la plage de lumière, Direct3D n’effectue pas d’autres calculs d’atténuation et n’applique aucun effet de la lumière au sommet.

Les constantes d’atténuation agissent comme des coefficients dans la formule : vous pouvez produire une variété de courbes d’atténuation en effectuant des ajustements simples. Vous pouvez définir Attenuation1 sur 1.0 pour créer une lumière qui n’atténue pas mais qui est toujours limitée par la plage, ou vous pouvez expérimenter différentes valeurs pour obtenir différents effets d’atténuation.

L’atténuation à la plage maximale de la lumière n’est pas de 0,0. Pour éviter que les lumières ne s’affichent soudainement lorsqu’elles se trouvent à la plage de lumière, une application peut augmenter la plage de lumière. L’application peut également configurer des constantes d’atténuation afin que le facteur d’atténuation soit proche de 0,0 à la plage de lumière. La valeur d’atténuation est multipliée par les composants rouge, vert et bleu de la couleur de la lumière pour mettre à l’échelle l’intensité de la lumière en tant que facteur de la distance parcourue par la lumière vers un sommet.

Facteur Spotlight

L’équation suivante spécifie le facteur spotlight.

équation du facteur de mise en évidence

Paramètre Valeur par défaut Type Description Plage
rhoi N/A Virgule flottante cosinus(angle) pour spotlight i N/A
phii 0.0 Virgule flottante Angle de pénombre de la lumière i en radians [thetai, pi)
thetai 0.0 Virgule flottante Angle Umbra de spotlight i dans les radians [0, pi)
Diminution 0.0 Virgule flottante Facteur de repli (-infini, +infini)

 

Où :

rho = norm(Ldcs).norm(Ldir)

et

Paramètre Valeur par défaut Type Description
Ldcs N/A Vecteur 3D avec des valeurs à virgule flottante x, y et z Négatif de la direction de la lumière dans l’espace de la caméra
Ldir N/A Vecteur 3D avec des valeurs à virgule flottante x, y et z Vecteur de direction de la position de vertex à la position de lumière

 

Après avoir calculé l’atténuation de la lumière, pour calculer les composants diffus et spéculaires du vertex, Direct3D prend également en compte les effets de lumière, le cas échéant, l’angle que la lumière reflète à partir d’une surface et la réflexion du matériau actuel. Dans Types de lumière, consultez « Spotlight ».

Formules mathématiques d’éclairage