Cor da neblina (Direct3D 9)

A cor da neblina para a neblina de pixel e vértice é definida por meio do estado de renderização D3DRS_FOGCOLOR. Os valores de estado de renderização podem ser qualquer cor RGB, especificada como uma cor RGBA. O componente alfa é ignorado.

O exemplo C++ a seguir define a cor da neblina como branca.

/* For this example, the d3dDevice variable is
* a valid pointer to an IDirect3DDevice9 interface.
*/
HRESULT hr;
hr = d3dDevice->SetRenderState(
                    D3DRS_FOGCOLOR,
                    0x00FFFFFF); // Highest 8 bits are not used.
if(FAILED(hr))
    return hr;

A neblina é aplicada de forma diferente pelo pipeline de função fixa e pelo pipeline programável.

  1. Se o driver der suporte a D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • Se o pipeline de função fixa for usado e D3DRS_FOGCOLOR estiver definido, v1.w (no sombreador de pixel) será igual ao valor definido em renderstate de neblina.
    • Se o pipeline programável for usado, v1.w (no sombreador de pixel) será igual a 0, mesmo que o oD1.w seja escrito explicitamente em um sombreador de vértice.
  2. Se o driver NÃO der suporte a D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • Se o pipeline de função fixa for usado e D3DRS_FOGCOLOR estiver definido, v1.w (no sombreador de pixel) será igual ao valor definido em renderstate de neblina.
    • Se oFog for escrito explicitamente em um sombreador de vértice, v1.w (no sombreador de pixel) será igual a oFog, fixado entre 0 e 1.
    • Se nenhum dos dois casos acima se aplicar, v1.w (no sombreador de pixel) será igual a 0, mesmo que o oD1.w seja escrito explicitamente em um sombreador de vértice.

Para obter mais informações, consulte D3DPMISCCAPS.

Tipos de neblina