Projected Grid Rendering und Screen Space Displacement Mapping

Blühende Landschaften

Alexander Rudolph


Spieleprogrammierer stehen tagtäglich vor der immer gleichen Herausforderung, weitläufige Spielewelten voller Detailreichtum mit einer begrenzten Anzahl von Vertices (bzw. Dreiecksflächen) und Texturen darstellen zu müssen. In diesem Zusammenhang erscheint die Nachbildung von sehr kleinen Objekten, beispielsweise von einzelnen Ziegelsteinen, Dachziegeln oder einem Kopfsteinpflaster, auf den ersten Blick genauso aussichtslos zu sein, wie die Visualisierung von kilometerweiten, zerklüfteten Landschaften oder sturmgepeitschten Wasserflächen. Und in der Tat, noch bis vor wenigen Jahren war dies auch so. Detailreiche 3-D-Modelle – mittlerweile würden wir viele davon schon wieder als detail­arm bezeichnen – konnten lediglich in unmittelbarer Nähe zur Kamera eingesetzt werden. Gemäß der Formel „viele Details im Vordergrund – wenige Details im Hintergrund“ wurde der Detailgrad der einzelnen Modelle schrittweise reduziert, wobei mehrere im Vorfeld berechnete Detailstufen (LOD-Stufen, Level Of Detail) bis hin zu einfachsten Billboard-Objekten (zweidimensionale Darstellung eines 3-D-Modells) zum Einsatz kamen. Heutzutage mutet diese Vorgehensweise zumindest für viele Spieler geradezu vorsintflutlich an. Der Begriff Tessellation (Parkettierung) – für viele gleichbedeutend mit der Echtzeitberechnung und -darstellung von unglaublich detaillierten 3-D-Modellen, deren Detailreichtum sich mit zunehmendem Kameraabstand kontinuierlich verringert – hat sich in Verbindung mit DirectX 11 oder OpenGL 4 zu einem regelrechten Buzz-Wort in der Spielercommunity entwickelt. Für einige Leser mag es daher zunächst ein wenig überraschend sein, dass sich Tessellations-Berechnungen auch problemlos auf älteren, lediglich für DirectX 10 bzw. OpenGL 3 ausgelegten Grafikkarten durchführen lassen. Um die Möglichkeiten wie auch die Grenzen dieser neuen Technik besser abschätzen zu können, sollten wir uns zumindest kurz mit ihrer Funktionsweise befassen.

Im ersten Schritt ersetzt man die einzelnen Dreiecksflächen eines 3-D-Modells durch eine größere Anzahl kleinerer Dreiecksflächen, wobei man zur Positionsberechnung der neu erzeugten Vertices (Dreieckseckpunkte) die Positionen der bereits vorhandenen Vertices heranzieht. Das zu tessellierende Mesh (Drahtgittermodell) wird in diesem Zusammenhang als Kontroll-Mesh bzw. als Coarse Mesh bezeichnet. Im denkbar einfachsten Fall würde jede der ursprünglichen Dreiecksflächen durch zwei kleinere Dreiecksflächen ersetzt werden.

Im zweiten Schritt erfolgt...

Projected Grid Rendering und Screen Space Displacement Mapping

Blühende Landschaften

Alexander Rudolph


Spieleprogrammierer stehen tagtäglich vor der immer gleichen Herausforderung, weitläufige Spielewelten voller Detailreichtum mit einer begrenzten Anzahl von Vertices (bzw. Dreiecksflächen) und Texturen darstellen zu müssen. In diesem Zusammenhang erscheint die Nachbildung von sehr kleinen Objekten, beispielsweise von einzelnen Ziegelsteinen, Dachziegeln oder einem Kopfsteinpflaster, auf den ersten Blick genauso aussichtslos zu sein, wie die Visualisierung von kilometerweiten, zerklüfteten Landschaften oder sturmgepeitschten Wasserflächen. Und in der Tat, noch bis vor wenigen Jahren war dies auch so. Detailreiche 3-D-Modelle – mittlerweile würden wir viele davon schon wieder als detail­arm bezeichnen – konnten lediglich in unmittelbarer Nähe zur Kamera eingesetzt werden. Gemäß der Formel „viele Details im Vordergrund – wenige Details im Hintergrund“ wurde der Detailgrad der einzelnen Modelle schrittweise reduziert, wobei mehrere im Vorfeld berechnete Detailstufen (LOD-Stufen, Level Of Detail) bis hin zu einfachsten Billboard-Objekten (zweidimensionale Darstellung eines 3-D-Modells) zum Einsatz kamen. Heutzutage mutet diese Vorgehensweise zumindest für viele Spieler geradezu vorsintflutlich an. Der Begriff Tessellation (Parkettierung) – für viele gleichbedeutend mit der Echtzeitberechnung und -darstellung von unglaublich detaillierten 3-D-Modellen, deren Detailreichtum sich mit zunehmendem Kameraabstand kontinuierlich verringert – hat sich in Verbindung mit DirectX 11 oder OpenGL 4 zu einem regelrechten Buzz-Wort in der Spielercommunity entwickelt. Für einige Leser mag es daher zunächst ein wenig überraschend sein, dass sich Tessellations-Berechnungen auch problemlos auf älteren, lediglich für DirectX 10 bzw. OpenGL 3 ausgelegten Grafikkarten durchführen lassen. Um die Möglichkeiten wie auch die Grenzen dieser neuen Technik besser abschätzen zu können, sollten wir uns zumindest kurz mit ihrer Funktionsweise befassen.

Im ersten Schritt ersetzt man die einzelnen Dreiecksflächen eines 3-D-Modells durch eine größere Anzahl kleinerer Dreiecksflächen, wobei man zur Positionsberechnung der neu erzeugten Vertices (Dreieckseckpunkte) die Positionen der bereits vorhandenen Vertices heranzieht. Das zu tessellierende Mesh (Drahtgittermodell) wird in diesem Zusammenhang als Kontroll-Mesh bzw. als Coarse Mesh bezeichnet. Im denkbar einfachsten Fall würde jede der ursprünglichen Dreiecksflächen durch zwei kleinere Dreiecksflächen ersetzt werden.

Im zweiten Schritt erfolgt...

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