Iluminação ambiente (Direct3D 9)
A iluminação ambiente fornece iluminação constante para uma cena. Ele destaca todos os vértices de objeto da mesma forma porque ela não depende de quaisquer outros fatores de iluminação como normais de vértice, direção da luz, posição da luz, intervalo ou atenuação. É o tipo mais rápido de iluminação, mas produz os resultados menos realistas. O Direct3D contém uma única propriedade de luz ambiente global que você pode usar sem criar qualquer luz. Como alternativa, você pode configurar qualquer objeto de luz para fornecer iluminação ambiente. A iluminação ambiente para uma cena é descrita pela seguinte equação.
Iluminação ambiente = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]
Em que:
Parâmetro | Valor padrão | Type | Descrição |
---|---|---|---|
Cₐ | (0,0,0,0) | D3DCOLORVALUE | Cor ambiente do material |
Gₐ | (0,0,0,0) | D3DCOLORVALUE | Cor ambiente global |
Atteni | (0,0,0,0) | D3DCOLORVALUE | Atenuação de luz da luz ith. Consulte Atenuação e fator de destaque (Direct3D 9). |
Spoti | (0,0,0,0) | D3DVECTOR | Fator de destaque da luz ith. Consulte Atenuação e fator de destaque (Direct3D 9). |
Sum | N/D | N/D | Soma da luz ambiente |
Lai | (0,0,0,0) | D3DVECTOR | Cor ambiente da luz da luz ith |
O valor de Cₐ é:
- cor do vértice1, se AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 e a primeira cor de vértice for fornecida na declaração de vértice.
- cor do vértice2, se AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 e a segunda cor de vértice for fornecida na declaração de vértice.
- cor ambiente do material.
Observação
Se uma das opções AMBIENTMATERIALSOURCE for usada e a cor do vértice não for fornecida, a cor ambiente do material será usada.
Para usar a cor ambiente do material, use SetMaterial, conforme mostrado no exemplo de código abaixo.
Gₐ é a cor ambiente global. Ele é definido usando SetRenderState(D3DRS_AMBIENT). Há uma cor ambiente global em uma cena do Direct3D. Este parâmetro não está associado um objeto de luz do Direct3D.
Lai é a cor ambiente da luz ith na cena. Cada luz do Direct3D tem um conjunto de propriedades, uma delas é a cor ambiente. O termo, sum(Lai) é a soma de todas as cores ambiente na cena.
Exemplo
Neste exemplo, o objeto é colorido usando a luz ambiente da cena e uma cor 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);
De acordo com a equação, a cor resultante para os vértices do objeto é uma combinação da cor do material e da cor da luz.
As duas ilustrações a seguir mostram a cor de material, que é cinza, e a cor de luz, que é vermelho brilhante.
A cena resultante é mostrada na ilustração a seguir. O único objeto na cena é uma esfera. A luz ambiente destaca todos os vértices do objeto com a mesma cor. Não é dependente da normal de vértice ou da direção da luz. Como resultado, o círculo se parece com um círculo 2D porque não há nenhuma diferença na sombreamento ao redor a superfície do objeto.
Para dar uma aparência mais realista aos objetos, aplique iluminação especular ou difusa além de iluminação.
Tópicos relacionados