Partager via


Facteur d’atténuation et de mise en avant (Direct3D 9)

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 FLOAT Facteur d’atténuation constant 0 à +infini
att1i 0,0 FLOAT Facteur d’atténuation linéaire 0 à +infini
att2i 0,0 FLOAT Facteur d’atténuation quadratique 0 à +infini
d N/A FLOAT 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.

Les valeurs att0, att1 et att2 sont spécifiées par les membres Attenuation0, Attenuation1 et Attenuation2 de D3DLIGHT9.

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 D3DVECTOR Vecteur de direction de la position de vertex à la position de lumière

 

Si d est supérieur à la plage de la lumière, c’est-à-dire le membre Range d’une structure D3DLIGHT9 , Direct3D n’effectue 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’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 FLOAT cosinus(angle) pour spotlight i N/A
phii 0,0 FLOAT Angle de pénombre de la lumière i en radians [thetai, pi)
thetai 0,0 FLOAT Angle Umbra de spotlight i dans les radians [0, pi)
Diminution 0,0 FLOAT Facteur de repli (-infini, +infini)

 

Où :

rho = norm(Ldcs). norm(Ldir)

et

Paramètre Valeur par défaut Type Description
Ldcs N/A D3DVECTOR Négatif de la direction de la lumière dans l’espace de la caméra
Ldir N/A D3DVECTOR Vecteur de direction de la position de vertex à la position de lumière

 

Après avoir calculé l’atténuation de la lumière, 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 pour calculer les composants diffus et spéculaires de ce vertex. Pour plus d’informations, consultez SpotLight.

Mathématiques de l’éclairage