Udostępnij za pośrednictwem


Mapy światła rozproszonego (Direct3D 9)

Gdy światło jest oświetlone przez źródło światła, matowe powierzchnie wyświetlają odbicie światła rozproszonego. Jasność światła rozproszonego zależy od odległości od źródła światła i kąta między powierzchnią normalną a wektorem kierunku źródła światła. Efekty oświetlenia rozproszonego symulowane przez obliczenia oświetlenia generują tylko efekty ogólne.

Aplikacja może symulować bardziej złożone oświetlenie rozproszone z mapami światła tekstury. W tym celu dodaj mapę światła rozproszonego do tekstury podstawowej, jak pokazano w poniższym przykładzie kodu 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 );

mapowanie światła z teksturami