OpenGL Tutorial (Version 3.3) – Screen Space Ambient Occlusion (SSAO) (Download)

Im heutigen OpenGL Tutorial befassen wir uns mit der Implementierung zweier Screen Space Ambient Occlusion Techniken. Die ersten zwei Screenshots zeigen den Effekt des klassischen SSAO (Distance Based Occlusion), Screenshot 3 demonstriert eine gänzlich anderes Verfahren (Surface Height Occlusion).

Screen Space Ambient Occlusion (Umgebungsverdeckung) gehört in modernen Computerspielen mittlerweile zu den Standardtechniken, die im Rahmen des Post Processings zum Einsatz kommen. Es handelt sich um ein rein empirisches Modell, welches auf der alltäglichen Beobachtung basiert, dass Flächen bzw. Szenenpixel, die in geringem Abstand von anderen Flächen umgeben sind, dunkler erscheinen als freiliegende Flächen. Der Grund ist einfach – umliegende Flächen bzw. Szenenpixel blockieren teilweise die Einstrahlung des ambienten Lichts. Im Gegensatz dazu trifft bei freiliegenden Flächen das ambiente Licht ungehindert aus allen Richtungen auf.


Distance Based Occlusion: Für jedes Szenenpixel wird überprüft, ob benachbarte Szenenpixel (Occluder) den ambienten Lichteinfall blockieren. Hierbei behindern Occluder mit geringem Abstand zum Szenenpixel den Lichteinfall stärker als Occluder mit größerem Abstand. Je mehr Richtungen dabei berücksichtigt werden, umso besser ist das sichtbare Resultat.





Surface Height Occlusion: Anhand der in der Normal Map gespeicherten Höhenwerte wird in Abhängigkeit von der momentanen Blickrichtung die Umgebungsverdeckung sowie ein dreidimensionaler Oberflächen-Effekt berechnet.



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

Visual C++ 2010: DemoWithOpenGL2010_Tut44