Partager via


Mathématiques de l’éclairage (Direct3D 9)

Le modèle de lumière Direct3D couvre l’éclairage ambiant, diffus, spéculaire et émissif. Cette flexibilité est suffisante pour résoudre un large éventail de situations d’éclairage. Vous faites référence à la quantité totale de lumière dans une scène en tant qu’éclairage global et vous la calculez à l’aide de l’équation suivante.

Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light 

L’éclairage ambiant (Direct3D 9) est un éclairage constant. Il 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 des objets à l’aspect plat et irréaliste. Pour voir comment l’éclairage ambiant est calculé par Direct3D, consultez Éclairage ambiant (Direct3D 9).

L’éclairage diffus (Direct3D 9) dépend à la fois de la direction de la lumière et de la surface de l’objet normale. Il varie d’une surface à l’autre d’un objet en raison de la modification de la direction de la lumière et de la modification du vecteur de nombre de surface. Le calcul de l’éclairage diffus prend plus de temps, car il change pour chaque vertex d’objet, mais l’avantage de l’utiliser est qu’il nuance les objets et leur donne une profondeur en trois dimensions (3D). Pour voir comment l’éclairage diffus est calculé dans Direct3D, consultez Éclairage diffus (Direct3D 9).

L’éclairage spéculaire (Direct3D 9) identifie les mises en évidence spéculaires brillantes qui se produisent lorsque la lumière atteint la surface d’un objet et se reflète vers l’appareil photo. Il est plus intense que la lumière diffuse et tombe plus rapidement sur la surface de l’objet. Il faut plus de temps pour calculer l’éclairage spéculaire que l’éclairage diffus, mais l’avantage de son utilisation est qu’il ajoute des détails significatifs à une surface. Pour voir comment l’éclairage spéculaire est calculé dans Direct3D, consultez Éclairage spéculaire (Direct3D 9).

L’éclairage émissif (Direct3D 9) est la lumière émise par un objet ; par exemple, une lueur. Pour voir comment l’éclairage émissif est calculé dans Direct3D, consultez Éclairage émissif (Direct3D 9).

Un éclairage réaliste peut être réalisé en appliquant chacun de ces types d’éclairage à une scène 3D. Les valeurs calculées pour les composants ambiants, émissifs et diffus sont générées en tant que couleur de vertex diffuse ; la valeur du composant d’éclairage spéculaire est sortie en tant que couleur de vertex spéculaire. Les valeurs de lumière ambiante, diffuse et spéculaire peuvent être affectées par l’atténuation et le facteur de lumière d’une lumière donnée. Pour plus d’informations sur le fonctionnement de l’atténuation, consultez Atténuation et spotlight Factor (Direct3D 9).

Pour obtenir un effet d’éclairage plus réaliste, vous ajoutez plus de lumières; toutefois, le rendu de la scène prend plus de temps. Pour obtenir tous les effets souhaités par un concepteur, certains jeux utilisent plus de puissance processeur que ce qui est généralement disponible. Dans ce cas, il est courant de réduire au minimum le nombre de calculs d’éclairage en utilisant des cartes d’éclairage et des cartes d’environnement pour ajouter de l’éclairage à une scène tout en utilisant des cartes de texture.

L’éclairage est calculé dans l’espace de la caméra. Pour voir comment les transformations d’éclairage sont calculées, consultez Transformations de l’espace de caméra (Direct3D 9). L’éclairage optimisé peut être calculé dans l’espace du modèle, lorsque des conditions spéciales existent : les vecteurs normaux sont déjà normalisés (D3DRS_NORMALIZENORMALS est True), le mélange de vertex n’est pas nécessaire, les matrices de transformation sont orthogonales, etc.

Lumières et matériaux