Compartir a través de


Mapas de luz difusa (Direct3D 9)

Cuando se ilumina mediante una fuente de luz, las superficies mates muestran la reflexión de luz difusa. El brillo de la luz difusa depende de la distancia desde la fuente de luz y el ángulo entre la superficie normal y el vector de dirección de la fuente de luz. Los efectos de iluminación difusa simulados por cálculos de iluminación producen sólo efectos generales.

La aplicación puede simular iluminación difusa más compleja con mapas de luz de textura. Para ello, agregue el mapa de luz difusa a la textura base, como se muestra en el siguiente ejemplo de código de C++.

// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface.
// lptexBaseTexture is a valid pointer to a texture.
// lptexDiffuseLightMap is a valid pointer to a texture that contains 
// RGB diffuse light map data.

// Set the base texture.
d3dDevice->SetTexture(0,lptexBaseTexture );

// Set the base texture operation and args.
d3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,
                                D3DTOP_MODULATE );
d3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(0,D3DTSS_COLORARG2, D3DTA_DIFFUSE );

// Set the diffuse light map.
d3dDevice->SetTexture(1,lptexDiffuseLightMap );

// Set the blend stage.
d3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE );
d3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT );

Asignación de luz con texturas