Partager via


Éclairage ambiant (Direct3D 9)

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, le sens de la lumière, la position de la lumière, la portée ou l’atténuation. C’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. Consultez Atténuation et facteur de mise en évidence (Direct3D 9).
Spoti (0,0,0,0) D3DVECTOR Facteur de projecteur de la lumière ith. Consultez Atténuation et facteur de mise en évidence (Direct3D 9).
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 :

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

Notes

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. Il est défini à 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 lumineux 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

// create material
D3DMATERIAL9 mtrl;
ZeroMemory(&mtrl, sizeof(mtrl));
mtrl.Ambient.r = 0.75f;
mtrl.Ambient.g = 0.0f;
mtrl.Ambient.b = 0.0f;
mtrl.Ambient.a = 0.0f;
m_pd3dDevice->SetMaterial(&mtrl);
m_pd3dDevice->SetRenderState(D3DRS_AMBIENT, GRAY_COLOR);

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 grise d’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 du sommet normal 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 dans l’ombrage autour de la surface de l’objet.

illustration d’une sphère avec éclairage ambiant

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

Mathématiques de l’éclairage