Ertelenmiş Gölgelendirme (Deferred Shading)
Geleneksel İleriye Dönük Renderda (Forward Shading), sahnedeki her bir nesneyi çizerken sahnedeki her bir ışığı döngüye sokarız.
Eğer sahnede \(N\) adet nesne ve \(L\) adet ışık varsa: $\(\text{Karmaşıklık} = O(N \times L)\)$
Daha da kötüsü: Bir nesne çizilip aydınlatıldıktan sonra arkasında kalan başka bir nesne tarafından kapatılırsa (Depth Test sonucu ezilirse), o nesne için harcanan tüm aydınlatma hesaplamaları çöpe gider (Overdraw felaketi)! Bu yüzden Forward Shading ile sahnede 10-20'den fazla ışık kullanmak performansı mahveder.
Ertelenmiş Gölgelendirme (Deferred Shading), aydınlatma hesaplamalarını sahne geometrisinden tamamen ayırarak sahnede yüzlerce, hatta binlerce ışığı 60 FPS hızında çalıştırmamıza imkan tanır!
G-Buffer (Geometri Tamponu) Mimarisi
İşlem iki aşamada yürütülür:

- Geometri Geçişi (Geometry Pass): Sahnedeki nesneler çizilir, ancak hiçbir aydınlatma hesabı yapılmaz! Yalnızca ekranda gerçekten görünen en öndeki piksellerin geometrik verileri bir dizi dokuya (G-Buffer) kaydedilir:
gPosition: 3B Dünya konumu (GL_RGBA16F),gNormal: Yüzey normalleri (GL_RGBA16F),-
gAlbedoSpec: RGB difüz rengi ve Alfa kanalında speküler parlaklık (GL_RGBA). -
Aydınlatma Geçişi (Lighting Pass): Ekranı kaplayan tek bir 2B dikdörtgen (Full-screen quad) çizilir. Fragment shader, G-Buffer dokularını okur ve ışıkları yalnızca ekranda gerçekten görünen pikseller için hesaplar! $\(\text{Karmaşıklık} = O(\text{Ekran Pikselleri} \times L)\)$
G-Buffer FBO Kurulumu (C++)
Aydınlatma Geçişi Fragment Shader'ı
[!WARNING] Deferred Shading Dezavantajları: - Çok fazla bellek ve bant genişliği harcar (G-Buffer dokuları ağırdır). - Şeffaflık (Blending) doğrudan uygulanamaz (şeffaf nesneler en son Forward Shading ile çizilmelidir). - Donanımsal MSAA (Multi-Sample Anti-Aliasing) doğrudan çalışmaz (FXAA veya TAA gibi post-process AA gerektirir).