Deferred Lighting

Die grundlegende Idee hinter dem Deferred Lighting lässt sich in nur einem Satz beschreiben – um Rechenzeit einzusparen, sollten Beleuchtungsberechnungen nur für diejenigen Szenenpixel durchgeführt werden, die man auch wirklich auf dem Bildschirm sieht. So sinnvoll dieser Ansatz auch erscheinen mag, lies er sich bis vor wenigen Jahren praktisch nicht realisieren, denn die damaligen Grafikkarten verfügten über zu wenig Platz zum Speichern der für die Berechnung benötigen Zusatzinformationen. In älteren Spielen erfolgte die Beleuchtung der 3D-Objekte daher stets zeitgleich mit dem Rendering (Forward Rendering).

Bevor die eigentlichen Beleuchtungsberechnungen durchgeführt werden können, müssen die hierfür benötigten geometrischen Informationen zunächst in die nachfolgend beschriebenen Texturen gerendert werden, die allesamt an einen als G-Buffer (Geometry Buffer) bezeichneten Framebuffer gebunden sind:

  • Textur 1: Kameraraum-Positionen und Tiefenwerte der sichtbaren Szenenpixel
  • Textur 2: Kameraraum-Normalen der sichtbaren Szenenpixel
  • Textur 3: Die texturierten, jedoch nicht beleuchteten sichtbaren Szenenpixel
  • Textur 4: Reflektionsvermögen (Farbe und Intensität) der sichtbaren Szenenpixel
  • Textur 5: selbstleuchtende Szenenpixel (Bsp. mittels Light Map beleuchtet)


Vorteile des Deferred Lightings:

  • Der Rechenaufwand für die Beleuchtung ist unabhängig von der Komplexität der Szenen-Geometrie
  • Es lassen sich deutlich mehr Lichtquellen berücksichtigen als beim Forward Rendering
  • Die im Rahmen des Deferred Lightings benötigten Szeneninformationen lassen sich auch im Rahmen weiterer Post-Prozessing-Effekte verwenden (Bsp. Light Scattering, Screen Space Ambient Occlusion)


weiterführende Links: