GeForce

DirectX 11 Tesselation

 
 

DirectX 11 Tesselation — Warum die Aufregung?

In letzter Zeit ist viel von DirectX 11 und einem seiner wichtigsten neuen Merkmale die Rede gewesen: der Tesselation. Vom Prinzip her ist Tesselation leicht zu begreifen: man nimmt ein Polygon und teilt es in kleinere Teile auf. Aber was bringt das? Und welchen Nutzen hat das für Spiele? Dieser Artikel behandelt die grundlegenden Neuerungen, die Tesselation bei 3D Grafik auf dem PC ermöglicht, und geht auf die extreme Tesselationsleistung der NVIDIA® GeForce® GTX 400 Grafikprozessoren ein.

Im Prinzip ist Tesselation also das Zerlegen von Polygonen in kleinere Teile. Wenn man beispielsweise ein Quadrat einmal diagonal durchschneidet, hat man das Quadrat in zwei Dreiecke „tesseliert“. Für sich alleine genommen, wirkt sich die Tesselation kaum auf den Realismus der Darstellung aus. In einem PC-Spiel ist es beispielsweise unerheblich, ob ein Quadrat als zwei Dreiecke oder als zweitausend Dreiecke gerendert wird. Die Tesselation steigert den Realismus erst dann, wenn die zusätzlichen Dreiecke zur Darstellung zusätzlicher Informationen verwendet werden.

Triangle Mapping Displacement Mapping
Wird eine Displacement Map (links) auf eine ebene Fläche angewendet, spiegelt die resultierende Fläche die in der Displacement Map kodierten Höheninformationen wieder.

Das einfachste und am weitesten verbreitete Verfahren, diese zusätzlichen Dreiecke sinnvoll einzusetzen, ist das sogenannte Displacement Mapping. Eine Displacement Map ist eine Textur, die Höheninformationen enthält. Wird diese Textur auf eine Fläche angewendet, werden die Gitterpunkte (Vertices) der Fläche je nach der entsprechenden Höheninformation nach oben oder unten verschoben. Der Grafiker kann beispielsweise die Vertices einer Marmorscheibe so verschieben, dass eine Skulptur entsteht. Besonders beliebt ist das Anwenden von Displacement Maps auf Terrains, um Krater, Schluchten oder Berge auszuarbeiten.

Tesselation und Displacement Mapping sind schon seit längerem bekannt, konnten sich aber bis vor kurzem nicht wirklich durchsetzen. Der Grund hierfür war, dass die bearbeitete Ebene für ein effektives Displacement Mapping über eine sehr große Anzahl Gitternetzpunkte verfügen muss. Nehmen wir wieder das Beispiel der Marmorskulptur – wenn der Marmorblock nur acht Gitternetzpunkte hat, kann man sie noch so sehr verschieben und wird doch nie eine Skulptur eines Drachen erreichen. Ein detailliertes Relief kann nur erstellt werden, wenn das Gitternetz eine ausreichende Anzahl an Vertices für die gewünschte Form enthält. Kurz gesagt – Displacement Mapping macht nur Sinn mit Tesselation, und umgekehrt genauso.

Mit DirectX 11 wurden Tesselation und Displacement Mapping endlich zusammen gebracht, und Entwickler auf der ganzen Welt freuen sich. Beliebte Spiele wie Alien vs. Predator und Metro 2033 verwenden Tesselation, um glatte Modelle zu erstellen, und auch die Entwickler von Valve und id Software haben diese Verfahren mit vielversprechendem Ergebnis auf bereits existierende Spielcharaktere angewendet.

Coarse Model
Das grobe Modell (links) wird tesseliert, um ein glattes Modell zu erhalten (Mitte). Durch anschließendes Displacement Mapping (rechts) lässt sich filmreifer Realismus erzielen. © Kenneth Scott, id Software 2008

Die Tesselationspipeline von DirectX 11 ist programmierbar und lässt sich daher für viele unterschiedliche grafische Herausforderungen verwenden. Im Folgenden betrachten wir vier Beispiele.

Perfektes Bump Mapping

Model Comparision

Im Grunde kann Displacement Mapping als Ersatz für bestehende Bump Mapping Verfahren eingesetzt werden. Viele derzeit übliche Mapping-Verfahren erwecken den Eindruck unebener Oberflächen durch verbessertes Pixelshading. Diese Verfahren funktionieren jedoch nur in speziellen Fällen und wirken auch dann häufig nicht sehr überzeugend. Ein fortschrittliches Bump Mapping Verfahren ist zum Beispiel das sogenannte Parallax Occlusion Mapping. Dieses Verfahren erweckt den Eindruck überlappender Geometrien, funktioniert aber nur bei ebenen Flächen und nur im Inneren von Objekten (siehe Abbildung oben). Beim echten Displacement Mapping treten diese Probleme nicht auf, und es funktioniert aus allen Blickwinkeln.

Glattere Figuren

Smoothing Character
PN-Triangles ermöglichen automatisches Glätten von Figuren ohne Zutun des Grafikers. Geometrie und Beleuchtung werden realistischer.

Die andere natürliche Ergänzung der Tesselation sind Refinement-Algorithmen. Refinement-Algorithmen erstellen aus einem groben Modell mithilfe von Tesselation ein glatteres Modell. Ein beliebtes Verfahren sind PN-Triangles (auch als N-Patches bezeichnet). Der PN-Triangles Algorithmus verwandelt Modelle mit geringer Auflösung in gekrümmte Flächen, die anschließend als Gitternetz kleiner tesselierter Dreiecke gezeichnet werden. Viele Grafik-Artefakte, die bei PC-Spielen bislang als unumgänglich galten — wie kantige Gelenke, eckige Räder oder grobe Gesichtszüge — lassen sich mit solchen Algorithmen vermeiden. Der PN-Triangles Algorithmus wird zum Beispiel im Spiel Stalker: Call of Pripyat für glattere, organischer wirkende Charaktere verwendet.

Nahtlose Detailtreue

Bei Spielen mit großen, offenen Umgebungen fällt häufig auf, dass Objekte in größerer Entfernung plötzlich ein- und ausgeblendet werden. Dies liegt daran, dass die Spiele-Engine zwischen verschiedenen Detailebenen (LODs – Levels of Detail) umschaltet, um übermäßige Geometrieberechnungen zu vermeiden. Bislang gab es keine einfache Methode, die Detailebene kontinuierlich zu verändern, da hierzu erforderlich gewesen wäre, viele Versionen desselben Modells oder derselben Umgebung zu speichern. Dynamische Tesselation lost dieses Problem, indem die Detailebene jederzeit beliebig variiert werden kann. Wenn zum Beispiel ein entferntes Gebäude in Sicht kommt, kann es zunächst mit nur zehn Dreiecken gerendert werden. Beim Herankommen werden nach und nach mehr Details dargestellt. Zunächst werden zusätzliche Dreiecke für das Dach und die Fenster verwendet. Wenn man schließlich vor der Tür steht, werden vielleicht allein tausend Dreiecke für die Darstellung des antiken Messing-Türgriffs verwendet, bei dem jede Kerbe sorgfältig mit Displacement Mapping heraus gearbeitet wurde. Dynamische Tesselation vermeidet das plötzliche Ein- und Ausblenden von Objekten, und Spieleumgebungen können praktisch unbegrenzt mit immer mehr geometrischen Details skaliert werden.

Skalierbare Grafik

Für Entwickler ermöglicht Tesselation die deutlich effizientere Erstellung von Inhalten. Nach den Gründen befragt, warum sie Tesselation verwenden, sagte Jason Mitchell von Valve: „Uns interessiert die Möglichkeit, Objekte zu erstellen, die auf- und abwärts skaliert werden können. Wir wollen ein Modell einmal erstellen und es dann auf Filmqualität skalieren können… und andererseits soll die Qualität von Objekten abwärts skaliert werden können, um das Rendern in Echtzeit auf möglichst vielen Systemen zu ermöglichen.“ Diese Fähigkeit, ein Modell einmal zu erstellen und es dann auf verschiedenen Plattformen verwenden zu können, bedeutet kürzere Entwicklungsphasen, und für den PC-Gamer maximale Bildqualität auf seinem Grafikprozessor.

Tesselation auf GeForce GTX 400 Grafikprozessoren

Herkömmliche Grafikprozessor-Architekturen verwenden eine einzelne Geometrie-Engine für die Tesselation. Dieser Ansatz entspricht dem Design früher Grafikprozessoren, die Pixelshading mit einer einzigen Pixel-Pipeline durchführten. Mittlerweile wurden die Pixel-Pipelines von einer auf mehrere Einheiten ausgeweitet und spielen eine wichtige Rolle für realistisches 3D. Deshalb haben wir unsere Tesselations-Architektur von vornherein parallel ausgelegt.

GeForce GTX 400 Grafikprozessoren verfügen über bis zu fünfzehn Tesselationseinheiten mit jeweils eigener Hardware für Vertex Fetch, Tesselation und Koordinatentransformation. Außerdem verfügen sie über vier parallel Raster-Engines, die die neu tesselierten Dreiecke in Pixel für das Pixelshading verwandeln. Das Ergebnis ist ein Durchbruch in der Tesselationsleistung — über 1,6 Milliarden Dreiecke pro Sekunde bei gleichbleibender Leistung. Zum Vergleich: Bei Tests der unabhängigen Webseite Bjorn3D hat sich die GeForce GTX 480 als bis zu 7,8x schneller als das beste Konkurrenzprodukt erwiesen.

Zusammenfassung

Nach vielen Jahren mehr oder weniger erfolgreicher Versuche ist die Tesselation auf dem PC endlich ausgereift. Spannende Spiele wie Metro 2033 zeigen bereits das Potential der Tesselation. In absehbarer Zeit dürfte Tesselation so wichtig und unerlässlich sein wie heute bereits das Pixelshading. NVIDIA hat dieses Potential früh erkannt und fördert die Entwicklung der Tesselation, indem wir von vornherein eine parallele Tesselations-Architektur zur Verfügung stellen. Das Ergebnis: Die Grafikprozessoren der GeForce GTX 400 Serie — für realistische Geometrie und Tesselationsleistung auf völlig neuem Niveau.



 
 
FacebookTwitterGoogle+XingPinterest