Rumus Kabut (Direct3D 9)
Aplikasi C++ dapat mengontrol bagaimana kabut memengaruhi warna objek dalam adegan dengan mengubah bagaimana Microsoft Direct3D menghitung efek kabut dari jarak jauh. Jenis enumerasi D3DFOGMODE berisi anggota yang mengidentifikasi tiga rumus kabut. Semua rumus menghitung faktor kabut sebagai fungsi jarak, mengingat parameter yang ditetapkan aplikasi Anda.
Kabut Linier
Ini diatur dengan persamaan D3DFOG_LINEAR berikut.
Di mana
- start adalah jarak di mana efek kabut dimulai.
- akhir adalah jarak di mana efek kabut tidak lagi meningkat.
- d mewakili kedalaman, atau jarak dari titik pandang. Untuk kabut berbasis rentang, nilai untuk d adalah jarak antara posisi kamera dan puncak. Untuk kabut berbasis non-rentang, nilai untuk d adalah nilai absolut koordinat Z di ruang kamera.
Kabut Eksponensial
Rumus linier dan eksponensial didukung untuk kabut piksel dan kabut puncak.
Ini diatur dengan persamaan D3DFOG_EXP berikut.
Di mana
- e adalah dasar logaritma alami (sekitar 2,71828).
- kepadatan adalah kepadatan kabut arbitrer yang dapat berkisar antara 0,0 hingga 1,0.
- d mewakili kedalaman, atau jarak dari titik pandang, seperti yang dinyatakan sebelumnya.
Ini diatur dengan persamaan D3DFOG_EXP2 berikut.
Di mana
- e adalah dasar logaritma alami seperti yang dinyatakan di atas.
- kepadatan adalah kepadatan kabut arbitrer yang dapat berkisar antara 0,0 hingga 1,0 seperti yang dinyatakan di atas.
- d mewakili kedalaman, atau jarak dari titik pandang, seperti yang dinyatakan di atas.
Catatan
Sistem menyimpan faktor kabut dalam komponen alfa dari warna spekular untuk verteks. Jika aplikasi Anda melakukan transformasi dan pencahayaannya sendiri, Anda dapat menyisipkan nilai faktor kabut secara manual, untuk diterapkan oleh sistem selama penyajian.
Grafik berikut menunjukkan rumus ini, menggunakan nilai umum seperti dalam parameter rumus.
D3DFOG_LINEAR adalah 1,0 pada awal dan 0,0 di akhir. Ini tidak diukur relatif terhadap bidang dekat atau jauh.
Ketika Direct3D menghitung efek kabut, ia menggunakan faktor kabut dari salah satu persamaan sebelumnya dalam persamaan campuran berikut.
Rumus ini secara efektif menskalakan warna poligon C saat ini oleh faktor kabut f, dan menambahkan produk ke warna kabut C, diskalakan oleh inversi bitwise dari faktor kabut. Nilai warna yang dihasilkan adalah perpaduan warna kabut dan warna asli, sebagai faktor jarak. Rumus berlaku untuk semua perangkat yang didukung di Microsoft DirectX 7.0 dan yang lebih baru. Untuk perangkat ramp warisan, faktor kabut menskalakan komponen warna difus dan spekular, dijepit ke kisaran 0,0 dan 1,0, inklusif. Faktor kabut biasanya dimulai pada 1,0 untuk bidang dekat dan menurun menjadi 0,0 di bidang jauh.
Topik terkait