OpenGL Tutorial (Version 3.3) – Volumetric Light Scattering (Download)

Im heutigen OpenGL Tutorial werden wir uns mit der Darstellung von Light-Scattering-Effekten (auch bekannt Light Shafts oder God Rays) befassen. Physikalisch betrachtet handelt es sich dabei um Streuprozesse, bei denen Lichtstrahlen an Wassertropfen in der Atmosphäre oder an Schmutzpartikeln (Staub, Rauch, etc.) in Richtung des Beobachters abgelenkt werden. Obgleich eine physikalisch korrekte Simulation viel zu aufwändig wäre, ist die Realisierung dieses Effekts im Rahmen den Post-Processings erstaunlich einfach:


  • Man ermittelt für jedes Szenenpixel die Richtung zur Lichtquelle im Bildraum
  • Man unterteilt den Abstand des Szenenpixels zur Lichtquelle (Lichtweg) in gleichmäßige Bereiche (Samples)
  • Man überprüft, ob der Lichtweg in den einzelnen Bereichen durch irgendwelche Hindernisse (3D-Modelle, Szenengeometrie) blockiert wird
  • Sollte der Lichtweg nicht blockiert sein, dann addiert man die Helligkeit im betreffenden Bereich zur Gesamthelligkeit des Szenenpixels

Resultat: Im Ergebnis erscheinen blockierte Lichtwege dunkler, wodurch sich Schattenräume ausbilden.




Hinweis:
Für die Ausführung dieses Programmbeispiels muss der Treiber Ihrer Grafikkarte die OpenGL Version 3.3 unterstützen.

Visual C++ 2010: DemoWithOpenGL2010_Tut42