Baru-baru ini ketika mencari memecahkan masalah jerawat bayangan pemetaan bayangan tradisional saya menerapkan peta bayangan eksponensial. Itu memang berhasil (tidak ada jerawat sama sekali) tetapi pada saat yang sama memperkenalkan kesalahan-kesalahan lain yang tidak dapat diterima.
Untuk kedalaman peta blur saya menggunakan gaussian blur dengan sigma terkecil = 1.
Tes untuk bayangan peta:
float occluder = texture(shadowMap lightCoords.xy).r;
float c = 5000.0;
float receiver = lightCoords.z;
float shadow = exp(c*(occluder-receiver));
shadow = clamp(shadow, 0.0, 1.0);
dengan faktor c kecil c=100.0
:
Pendarahan ringan yang tidak bisa diterima
dengan faktor c tinggi c=5000.0
:
Tidak ada perdarahan ringan tetapi detail frekuensi tinggi tampak "bengkak".
Tidak dapat menemukan pendarahan c - cahaya yang optimal muncul bahkan pada c=3000.0
dan bayangan bayangan frekuensi tinggi sudah ada. Tidak mengaburkan peta kedalaman membantu tetapi kemudian aliasing terjadi.
Dan pertanyaan saya adalah - bagaimana saya bisa meningkatkan teknik ini (ESM) atau haruskah saya mencari yang lain? Saya pikir bayangan berkualitas baik dengan kinerja yang bagus sangat mungkin - seperti yang terlihat dalam game modern seperti Witcher 3 atau Fallout 4.