Saya mencoba menerapkan pemetaan nada bersama dengan adaptasi mata dan HDR. Sebenarnya saya sudah menerapkan ini tetapi saya tidak puas dengan hasilnya dan saya pikir saya membuat kesalahan.
Gambar terakhir saya (sebelum postprocessing) saya simpan dalam tekstur setengah mengambang. Saya juga memiliki 2 tekstur pembantu. Yang pertama menyimpan luminance log dan rata-rata, min dan warna maksimumnya di mip-map terakhir. Yang kedua menyimpan nilai adaptasi yang dihitung sebagai:
prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate))
di mana prevLum adalah nilai adaptasi sebelumnya (ukuran tekstur ini adalah 1x1). Tekstur log luminance adalah format R8B8G8 dan yang kedua adalah R8. Dalam tutorial saya melihat bahwa tekstur setengah float digunakan tetapi dalam kasus saya saya punya gambar terlalu terang (hampir putih).
Dalam shader postprocess akhir saya menggunakan semua nilai yang ada untuk mendapatkan adaptasi mata dan pemetaan nada menggunakan kode ini:
float autokey(in float lum) {
return 1.03 - 2.0 / (2.0 + log10(lum + 1.0));
}
float hejl(in float color) {
float x = max(0.0, color - 0.004);
return (x * (A * x + B)) / (x * (A * x + C) + D);
}
float adaptedLum = texture(adaptedLuminance, vec2(0.5)).r;
float exp = exposure * autokey(adaptedLum) / adaptedLum;
result *= exp;
result.xyz=RGB2xyY(result.xyz); // conversion to CIE xyY
result.z = hejl(result.z);
result.xyz=xyY2RGB(result.xyz);
Dan inilah hasil saya:
- adaptasi mata dan pemetaan nada dihidupkan
- hanya adaptasi mata
- hanya pemetaan nada
- semuanya mati
Seperti yang Anda lihat ketika pemetaan nada diaktifkan, warna kelinci lebih pucat. Dan ketika adaptasi mata dihidupkan gambar akhir jauh lebih gelap. Dapatkah seseorang menjelaskan kepada saya apa yang dapat menyebabkan itu, karena saya pikir ada sesuatu yang salah di sini. Mungkin itu sesuatu dengan ruang warna yang saya tidak mengerti dengan baik? Atau dengan mekar yang diterapkan sebelum pemetaan nada dan adaptasi mata?
Saya juga memiliki perilaku aneh lain dengan adaptasi mata. Saat saya melihat area gelap, latar (langit) menjadi lebih cerah. Tidak apa-apa tapi itu selalu terjadi ketika pusat kamera berada di area hitam (tidak peduli seberapa jauh kamera dari area ini).
Saya mendasarkan pada implementasi termasuk dalam proyek-proyek di halaman ini: John Chapman , Nutty Software