Shadow mapping nasıl çalışır? Shadow acne, peter panning ve cascaded shadow maps nedir?
Cevap
Shadow mapping iki aşamalıdır:
- Sahne ışığın bakış açısından render edilir ve her piksel için ışığa en yakın derinlik bir texture'a (shadow map) yazılır.
- Normal render sırasında her piksel ışık uzayına dönüştürülür; pikselin ışığa uzaklığı shadow map'teki değerden büyükse, arada başka bir nesne vardır ve piksel gölgededir.
Directional ışıklar için ortografik, spot ışıklar için perspektif projeksiyon, point ışıklar için 6 yüzlü cube map kullanılır (point light gölgeleri bu yüzden pahalıdır).
Sık karşılaşılan sorunlar:
| Sorun | Sebep | Çözüm |
|---|---|---|
| Shadow acne (yüzeyde çizgili desen) | Derinlik hassasiyeti; yüzey kendini gölgeler | Depth bias, normal offset bias |
| Peter panning (gölge nesneden kopuk) | Fazla bias | Bias'ı dengelemek, kalın geometri |
| Aliasing (tırtıklı kenar) | Shadow map çözünürlüğü yetersiz | PCF filtreleme, daha yüksek çözünürlük |
| Uzakta bulanık, yakında yetersiz | Tek harita tüm görüş alanını kapsıyor | Cascaded Shadow Maps |
Cascaded Shadow Maps (CSM): Kamera frustum'u mesafeye göre dilimlere (cascade) bölünür; yakın dilime yüksek çözünürlüklü, uzak dilimlere daha kaba haritalar düşer. Unity URP/HDRP ve Unreal'da 2–4 cascade yaygındır. Kamera hareket ettiğinde gölgelerin titrememesi için cascade'ler texel boyutuna göre snap edilir.
Performans: Shadow pass sahneyi her ışık ve her cascade için yeniden render eder; bu yüzden gölge düşüren ışık sayısı, shadow distance ve gölge yapan nesneler sınırlandırılır. Statik ışıklar için baked shadow'lar tercih edilir. Unreal 5'te Virtual Shadow Maps, Nanite ile yüksek çözünürlüklü gölgeleri farklı bir yöntemle sağlar.
İlgili Grafik & Render soruları
- Forward ve deferred rendering arasındaki fark nedir? Hangisi ne zaman tercih edilir?
- LOD, frustum culling ve occlusion culling nedir?
- Draw call nedir? Batching teknikleri ile draw call sayısı nasıl azaltılır?
- Rendering pipeline nasıl işler? Vertex shader ile fragment shader arasındaki fark nedir?
- Texture sıkıştırma neden gereklidir? ASTC, BC ve ETC2 formatları arasındaki fark nedir?
- Mipmap nedir? Ne gibi faydaları ve maliyetleri vardır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.