Iluminación ambiental (Direct3D 9)
La iluminación ambiental proporciona iluminación constante para una escena. Ilumina todos los vértices de objeto igual porque no depende de ningún otro factor de iluminación, como los normales de vértice, la dirección de la luz, la posición de la luz, el rango o la atenuación. Es el tipo de iluminación más rápido, pero produce los resultados menos realistas. Direct3D contiene una única propiedad de luz ambiente global que puedes usar sin crear ninguna luz. Como alternativa, puede establecer cualquier objeto de luz para proporcionar iluminación ambiental. La iluminación ambiental de una escena se describe mediante la siguiente ecuación.
Iluminación ambiental = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]
Donde:
Parámetro | Valor predeterminado | Tipo | Descripción |
---|---|---|---|
Cₐ | (0,0,0,0) | D3DCOLORVALUE | Color ambiente del material |
Gₐ | (0,0,0,0) | D3DCOLORVALUE | Color ambiente global |
Atteni | (0,0,0,0) | D3DCOLORVALUE | Atenuación de luz de la luz. Consulta Atenuación y Factor de foco (Direct3D 9). |
Spoti | (0,0,0,0) | D3DVECTOR | Factor destacado de la luz ith. Consulta Atenuación y Factor de foco (Direct3D 9). |
Sum | N/D | N/D | Suma de la luz ambiental |
Lai | (0,0,0,0) | D3DVECTOR | Color ambiente claro de la luz |
El valor de Cₐ es:
- color de vértice1, si AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 y el primer color de vértice se proporciona en la declaración de vértice.
- color de vértice2, si AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 y el segundo color de vértice se proporciona en la declaración de vértice.
- color ambiente del material.
Nota
Si se usa la opción AMBIENTMATERIALSOURCE y no se proporciona el color del vértice, se usa el color ambiente del material.
Para usar el color ambiente del material, use SetMaterial como se muestra en el código de ejemplo siguiente.
Gₐ es el color ambiente global. Se establece mediante SetRenderState(D3DRS_AMBIENT). Hay un color ambiente global en una escena de Direct3D. Este parámetro no está asociado a un objeto claro de Direct3D.
Lai es el color ambiente de la luz ith en la escena. Cada luz direct3D tiene un conjunto de propiedades, una de las cuales es el color ambiente. El término sum(Lai) es una suma de todos los colores ambientales de la escena.
Ejemplo
En este ejemplo, el objeto se colorea utilizando la luz ambiental de la escena y un color ambiente de material.
#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);
Según la ecuación, el color resultante para los vértices del objeto es una combinación del color del material y el color claro.
Las dos ilustraciones siguientes muestran el color del material, que es gris, y el color claro, que es rojo brillante.
La escena resultante se muestra en la ilustración siguiente. El único objeto de la escena es una esfera. La luz ambiental ilumina todos los vértices de objeto con el mismo color. No depende del vértice normal o de la dirección de la luz. Como resultado, la esfera es similar a un círculo 2D porque no hay ninguna diferencia en sombreado alrededor de la superficie del objeto.
Para dar a los objetos un aspecto más realista, aplique iluminación difusa o especular además de iluminación ambiental.
Temas relacionados