Partager via


Éclairage ambiant

L’éclairage ambiant fournit un éclairage constant pour une scène. Il allume tous les sommets d’objet de la même façon, car il ne dépend pas d’autres facteurs d’éclairage tels que les normales de vertex, la direction de la lumière, la position de la lumière, la portée ou l’atténuation. L’éclairage ambiant est constant dans toutes les directions et il colore tous les pixels d’un objet de la même façon. Il est rapide à calculer, mais laisse les objets à l’aspect plat et irréaliste.

L’éclairage ambiant est le type d’éclairage le plus rapide, mais il produit les résultats les moins réalistes. Direct3D contient une seule propriété de lumière ambiante globale que vous pouvez utiliser sans créer de lumière. Vous pouvez également définir n’importe quel objet lumineux pour fournir un éclairage ambiant.

L’éclairage ambiant d’une scène est décrit par l’équation suivante.

Éclairage ambiant = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

Où :

Paramètre Valeur par défaut Type Description
Cₐ (0,0,0,0) D3DCOLORVALUE Couleur ambiante du matériau
Gₐ (0,0,0,0) D3DCOLORVALUE Couleur ambiante globale
Atteni (0,0,0,0) D3DCOLORVALUE Atténuation légère de la lumière ith. Voir Atténuation et facteur à la une.
Spoti (0,0,0,0) D3DVECTOR Facteur à la une de la lumière ith. Voir Atténuation et facteur à la une.
Sum N/A N/A Somme de la lumière ambiante
Lai ai (0,0,0,0) D3DVECTOR Couleur ambiante claire de la lumière ith

 

La valeur de Cₐ est :

  • couleur de vertex1, si AMBIENTMATERIALSOURCE = D3DMCS_COLOR1, et que la première couleur de vertex est fournie dans la déclaration de vertex.
  • vertex color2, si AMBIENTMATERIALSOURCE = D3DMCS_COLOR2, et que la deuxième couleur de vertex est fournie dans la déclaration de vertex.
  • couleur ambiante du matériau.

Note Si l’une des options AMBIENTMATERIALSOURCE est utilisée et que la couleur de vertex n’est pas fournie, la couleur ambiante du matériau est utilisée.

 

Pour utiliser la couleur ambiante du matériau, utilisez SetMaterial comme indiqué dans l’exemple de code ci-dessous.

Gₐ est la couleur ambiante globale. Elle est définie à l’aide de SetRenderState(D3DRS_AMBIENT). Il existe une couleur ambiante globale dans une scène Direct3D. Ce paramètre n’est pas associé à un objet clair Direct3D.

Lai est la couleur ambiante de la lumière ith dans la scène. Chaque lumière Direct3D a un ensemble de propriétés, dont l’une est la couleur ambiante. Le terme sum(Lai) est une somme de toutes les couleurs ambiantes de la scène.

Exemple

Dans cet exemple, l’objet est coloré à l’aide de la lumière ambiante de la scène et d’une couleur ambiante matérielle.

#define GRAY_COLOR  0x00bfbfbf

Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;

Selon l’équation, la couleur résultante pour les sommets de l’objet est une combinaison de la couleur du matériau et de la couleur claire.

Les deux illustrations suivantes montrent la couleur du matériau, qui est le gris, et la couleur claire, qui est rouge vif.

illustration d’une image de sphère grised’une sphère rouge

La scène résultante est illustrée dans l’illustration suivante. Le seul objet de la scène est une sphère. La lumière ambiante allume tous les sommets d’objet de la même couleur. Elle ne dépend pas de la normale du vertex ou de la direction de la lumière. Par conséquent, la sphère ressemble à un cercle 2D, car il n’y a aucune différence d’ombrage autour de la surface de l’objet.

illustration d’une sphère avec éclairage ambiant

Pour donner aux objets une apparence plus réaliste, appliquez un éclairage diffus ou spéculaire en plus de l’éclairage ambiant.

Formules mathématiques d’éclairage