© Liashko/Shutterstock.com
Entwickler Magazin
Post Processing - Revolution in der Spielewelt

Es werde Licht 2.0

Post Processing und HDR-Rendering zählen zu den Schlüsseltechnologien moderner Computerspiele und 3-D-Anwendungen. Im Rahmen des heutigen Artikels erörtern wir, was sich inhaltlich hinter diesen Begriffen verbirgt und wie genau sich diese Techniken mithilfe von Frame- und Render-Buffer-Objekten in einer OpenGL-Anwendung implementieren lassen.

Alexander Rudolph


In den letzten Jahren hat sich im Bereich der Echtzeit-3-D-Grafik eine regelrechte Revolution vollzogen, denn die Art und Weise, wie eine 3-D-Szene aufgebaut und beleuchtet wird, hat sich grundlegend verändert. In der klassischen Szenendarstellung, dem so genannten „Forward Rendering“, erfolgte die Beleuchtung der einzelnen 3-D-Objekte stets zeitgleich mit ihrer Positionierung in der Spielewelt (Transform and Lighting). Auch wenn sich diese Vorgehensweise bereits in unzähligen Spielen bewährt hat, sind die Grenzen dieser Technik längst erreicht. Zum einen ist die Implementierung von realistisch wirkenden Beleuchtungsmodellen (globale Beleuchtung; global Illumination) nicht möglich, und zum anderen werden viel zu viele unnötige Beleuchtungs- und Schattenberechnungen durchgeführt. Denn nicht wenige der zuvor beleuchteten Oberflächen sind am Ende der Szenendarstellung vollständig oder zumindest teilweise verdeckt. Diese Verschwendung von Rechenleistung führt ihrerseits dazu, dass nur eine sehr begrenzte Anzahl von Lichtquellen in einer 3-D-Szene platziert werden können.

In modernen 3-D-Anwendungen und -Spielen werden die Beleuchtungsberechnungen zunehmend getrennt von der Geometriedarstellung während der Post-Processing-Phase durchgeführt, wodurch sich die zuvor beschriebenen Probleme des Forward Renderings auf elegante Art und Weise beheben lassen. Mithilfe der Geometrie- und Farbinformationen einer 3-D-Szene, die man vor der eigentlichen Umsetzung der gewünschten Post-Processing-Effekte zunächst in diversen Render Targets (Render-Zielen, Texturen) zwischenspeichert, lassen sich Beleuchtungsberechnungen für nicht sichtbare Szenenpixel gezielt vermeiden. Die hierdurch frei werdenden Ressourcen können wir nutzen, um die für die globale Beleuchtung verantwortlichen Wechselwirkungen zwischen dem Licht und den Szenenpixeln unter Berücksichtigung der zuvor gespeicherten Geometrieinformationen zu simulieren, und um die Spielewelt mit einer deutlich größeren Anzahl von Lichtquellen auszuleuchten. Nachfolgend sind einige der Post-Processing-Effekte aufgelistet, die in modernen Computerspielen standardmäßig zum Einsatz kommen:

Screen Space Ambient Occlusion (SSAO: Simulation der indirekten Beleuchtung, ambientes Licht)SchattenberechnungenDeferred Lighting: Simulation der direkten Beleuchtung (direktionale Lichtquellen sowie Punktlichtquellen)NebelberechnungenDepth-Of-Field-Effekt (Schärfentiefe)

Schritt für Schritt wird das zunächst noch unbeleuchtete Szenenbild mithi...

Entwickler Magazin
Post Processing - Revolution in der Spielewelt

Es werde Licht 2.0

Post Processing und HDR-Rendering zählen zu den Schlüsseltechnologien moderner Computerspiele und 3-D-Anwendungen. Im Rahmen des heutigen Artikels erörtern wir, was sich inhaltlich hinter diesen Begriffen verbirgt und wie genau sich diese Techniken mithilfe von Frame- und Render-Buffer-Objekten in einer OpenGL-Anwendung implementieren lassen.

Alexander Rudolph


In den letzten Jahren hat sich im Bereich der Echtzeit-3-D-Grafik eine regelrechte Revolution vollzogen, denn die Art und Weise, wie eine 3-D-Szene aufgebaut und beleuchtet wird, hat sich grundlegend verändert. In der klassischen Szenendarstellung, dem so genannten „Forward Rendering“, erfolgte die Beleuchtung der einzelnen 3-D-Objekte stets zeitgleich mit ihrer Positionierung in der Spielewelt (Transform and Lighting). Auch wenn sich diese Vorgehensweise bereits in unzähligen Spielen bewährt hat, sind die Grenzen dieser Technik längst erreicht. Zum einen ist die Implementierung von realistisch wirkenden Beleuchtungsmodellen (globale Beleuchtung; global Illumination) nicht möglich, und zum anderen werden viel zu viele unnötige Beleuchtungs- und Schattenberechnungen durchgeführt. Denn nicht wenige der zuvor beleuchteten Oberflächen sind am Ende der Szenendarstellung vollständig oder zumindest teilweise verdeckt. Diese Verschwendung von Rechenleistung führt ihrerseits dazu, dass nur eine sehr begrenzte Anzahl von Lichtquellen in einer 3-D-Szene platziert werden können.

In modernen 3-D-Anwendungen und -Spielen werden die Beleuchtungsberechnungen zunehmend getrennt von der Geometriedarstellung während der Post-Processing-Phase durchgeführt, wodurch sich die zuvor beschriebenen Probleme des Forward Renderings auf elegante Art und Weise beheben lassen. Mithilfe der Geometrie- und Farbinformationen einer 3-D-Szene, die man vor der eigentlichen Umsetzung der gewünschten Post-Processing-Effekte zunächst in diversen Render Targets (Render-Zielen, Texturen) zwischenspeichert, lassen sich Beleuchtungsberechnungen für nicht sichtbare Szenenpixel gezielt vermeiden. Die hierdurch frei werdenden Ressourcen können wir nutzen, um die für die globale Beleuchtung verantwortlichen Wechselwirkungen zwischen dem Licht und den Szenenpixeln unter Berücksichtigung der zuvor gespeicherten Geometrieinformationen zu simulieren, und um die Spielewelt mit einer deutlich größeren Anzahl von Lichtquellen auszuleuchten. Nachfolgend sind einige der Post-Processing-Effekte aufgelistet, die in modernen Computerspielen standardmäßig zum Einsatz kommen:

Screen Space Ambient Occlusion (SSAO: Simulation der indirekten Beleuchtung, ambientes Licht)SchattenberechnungenDeferred Lighting: Simulation der direkten Beleuchtung (direktionale Lichtquellen sowie Punktlichtquellen)NebelberechnungenDepth-Of-Field-Effekt (Schärfentiefe)

Schritt für Schritt wird das zunächst noch unbeleuchtete Szenenbild mithi...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang