Rendering kabut di bawah air

8

Saya sadar akan glFog, yang memadukan antara kabut dan warna permukaan berdasarkan jarak ke kamera, seperti ini:

masukkan deskripsi gambar di sini

Persamaan bahkan diberikan dalam dokumen . Namun kabut langsung diaplikasikan di depan kamera. Saya mencoba membuat permukaan air dan ingin memiliki kedalaman, misalnya:

masukkan deskripsi gambar di sini

Saat ini saya hanya membuat permukaan air dengan alpha blending, seperti di bawah ini. Yang saya butuhkan adalah kabut didasarkan pada jarak dari permukaan air ke dasar air. Bagaimana saya bisa mendapatkan jarak ini? Untuk saat ini saya mengasumsikan kamera akan selalu berada di atas air.

masukkan deskripsi gambar di sini

jozxyqk
sumber

Jawaban:

5

Anda dapat melacak jarak ke permukaan kedua. Ini mungkin paling mudah secara konsep, tetapi tidak harus metode tercepat *.

Tapi ada trik yang rapi, Anda bisa melewatinya membuat peta kedalaman ke permukaan air dari kamera. Jarak dalam air sekarang adalah kedalaman piksel dikurangi kedalaman peta kedalaman. Ini tidak berfungsi dalam semua situasi seperti ketika Anda keluar dari air dan masuk kembali nanti. Tetapi harus bekerja dalam banyak kasus, seperti yang digambarkan. Anda bahkan dapat menggunakan teknik yang sama untuk operasi Boolean.

dmap

Gambar 1 : Render peta kedalaman, lihat peta kedalaman saat menaungi bagian bawah kolam Anda.

* Mungkin dalam kasus-kasus tertentu.

joojaa
sumber