Warna Kabut (Direct3D 9)

Warna kabut untuk kabut piksel dan puncak diatur melalui status render D3DRS_FOGCOLOR. Nilai status render dapat berupa warna RGB apa pun, yang ditentukan sebagai warna RGBA. Komponen alfa diabaikan.

Contoh C++ berikut mengatur warna kabut menjadi putih.

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

Kabut diterapkan secara berbeda oleh alur fungsi tetap dan alur yang dapat diprogram.

  1. Jika driver mendukung D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • Jika alur fungsi tetap digunakan dan D3DRS_FOGCOLOR diatur, v1.w (dalam shader piksel) sama dengan nilai yang diatur dalam renderstate kabut.
    • Jika alur yang dapat diprogram digunakan, maka v1.w (dalam shader piksel) sama dengan 0, bahkan jika oD1.w secara eksplisit ditulis dalam shader vertex.
  2. Jika driver TIDAK mendukung D3DPMISCCAPS_FOGANDSPECULARALPHA:
    • Jika alur fungsi tetap digunakan dan D3DRS_FOGCOLOR diatur, maka v1.w (dalam shader piksel) sama dengan nilai yang diatur dalam renderstate kabut.
    • Jika oFog secara eksplisit ditulis dalam shader vertex, v1.w (dalam shader piksel) sama dengan oFog, dijepit antara 0 dan 1.
    • Jika tidak satu pun dari dua kasus di atas berlaku, v1.w (dalam shader piksel) sama dengan 0, bahkan jika oD1.w secara eksplisit ditulis dalam shader vertex.

Untuk informasi selengkapnya, lihat D3DPMISCCAPS.

Jenis Kabut