Partager via


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 à la lumière. 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 vertex. 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
j S/O Virgule flottante Distance entre la position du sommet et la position de lumière S/O

 

  • 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 vertex est toujours positive.

d = | Ldir |

Où :

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

 

Si d est supérieur à la plage de la lumière, Direct3D ne fait aucun calcul d’atténuation supplémentaire 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’est pas atténuée, mais qui est toujours limitée par plage, ou vous pouvez expérimenter des valeurs différentes 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 empêcher les lumières d’apparaître soudainement lorsqu’elles se trouvent à la plage de lumière, une application peut augmenter la plage de lumière. Ou bien, l’application peut 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 que la lumière passe à un sommet.

Facteur à la une

L’équation suivante spécifie le facteur à la une.

équation du facteur à la une

Paramètre Valeur par défaut Type Description Plage
rhoi S/O Virgule flottante cosinus(angle) pour les projecteurs i S/O
phii 0.0 Virgule flottante Angle de penumbra de projecteur i en radians [thetai, pi)
thetai 0.0 Virgule flottante Angle Umbra de projecteur i en radians [0, pi)
Diminution 0.0 Virgule flottante Facteur de chute (-infini, +infini)

 

Où :

rho = norm(Ldcs).norm(Ldir)

et

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

 

Après avoir calculé l’atténuation de la lumière, pour calculer les composants diffuses et spéculaires pour le sommet, Direct3D considère également les effets à la lumière le cas échéant, l’angle que la lumière reflète à partir d’une surface et la réflectance du matériau actuel. Dans les types Light, voir « Spotlight ».

Mathématiques de l’éclairage