Color de niebla (Direct3D 9)

El color de niebla para la niebla de píxeles y vértices se establece a través del estado de representación D3DRS_FOGCOLOR. Los valores de estado de representación pueden ser cualquier color RGB, especificados como un color RGBA. Se omite el componente alfa.

En el siguiente ejemplo de C++ se establece el color de niebla en blanco.

/* 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;

La niebla se aplica de forma diferente por la canalización de función fija y la canalización programable.

  1. Si el controlador admite D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • Si se usa la canalización de función fija y se establece D3DRS_FOGCOLOR, v1.w (en el sombreador de píxeles) es igual al valor establecido en renderstate de niebla.
    • Si se usa la canalización programable, v1.w (en el sombreador de píxeles) es igual a 0, incluso si oD1.w se escribe explícitamente en un sombreador de vértices.
  2. Si el controlador NO admite D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • Si se usa la canalización de función fija y se establece D3DRS_FOGCOLOR, v1.w (en el sombreador de píxeles) es igual al valor establecido en el renderstate de niebla.
    • Si oFog se escribe explícitamente en un sombreador de vértices, v1.w (en el sombreador de píxeles) es igual a oFog, sujeta entre 0 y 1.
    • Si ninguno de los dos casos anteriores se aplica, v1.w (en el sombreador de píxeles) es igual a 0, incluso si oD1.w se escribe explícitamente en un sombreador de vértices.

Para obtener más información, vea D3DPMISCCAPS.

Tipos de niebla