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.
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.
Rubriques connexes