Was ist Tessellation in der Computergrafik?

16

In den letzten Spielen habe ich etwas mit der Bezeichnung Tessellation bemerkt. Wenn ich das Ding einschalte, wird meine Framerate zerstört.

Ich habe festgestellt, dass es beim Einschalten wie Anti-Aliasing aussieht.

Kann mir jemand weitere Informationen geben, was genau die GPU macht.

Anarach
quelle
2
Oh je, 2 Antworten und keine Bildgrafiker von ihrer besten Seite.
Joojaa

Antworten:

25

Tesselation ist eine Technik, mit der Sie Grundelemente (Dreiecke, Linien, Punkte usw.) auf der Grafikkarte erzeugen können. Insbesondere können Sie die aktuelle Geometrie wiederholt in ein feineres Netz unterteilen.

Auf diese Weise können Sie ein relativ grobes Netz auf Ihre Grafikkarte laden, dynamisch mehr Scheitelpunkte und Dreiecke erzeugen und dann ein Netz auf dem Bildschirm anzeigen, das viel glatter aussieht.

Tessellation Beispiel

Meistens wird diese Tesselation in jedem einzelnen Frame neu durchgeführt. Dies kann der Grund dafür sein, dass Ihre Framerate sinkt, sobald Sie dies aktivieren.

Die Tesselation erfolgt in mehreren Schritten und NACH dem Vertex-Shader.

Stufen

Die Bedingungen für jede Stufe variieren je nach API. In DirectX sind dies der Hull-Shader, die Hardware-Tessellation und der Domain-Shader. In OpenGL werden sie Tessellation Control Shader, Tesselation Primitive Generation und Tessellation Evaluation Shader genannt.

Die erste und die letzte Stufe sind programmierbar, die eigentliche Tesselation erfolgt durch die Hardware in einer festen Funktionsstufe.

Im Shader Tesselation Control legen Sie die Art und Anzahl der Unterteilungen fest.

Dann teilt der Hardware-Tessellator die Geometrie nach dem Control-Shader auf.

Zuletzt wird der Tessellation Evaluation Shader für jeden neu erzeugten Vertex aufgerufen. In diesem Shader legen Sie den Typ des zu generierenden Grundelements sowie den Abstand der Scheitelpunkte und vieles mehr fest. Dieser Shader kann ebenso wie ein Vertex-Shader für alle Arten von Per-Vertex-Berechnungen verwendet werden. Es wird garantiert, dass es mindestens einmal für jeden generierten Vertex aufgerufen wird.

Wenn Sie die Grundelemente weiter bearbeiten möchten, können Sie einen Geometrie-Shader hinzufügen.

Drachenseel
quelle
1
@Nicol Danke. Ich habe die Antwort entsprechend bearbeitet.
Drachenseel
7

Es werden 3 Phasen in der Pipeline aktiviert.

Der erste ist der Tessellation Control-Shader (Hull-Shader in D3D), der eine Reihe von Scheitelpunkten betrachtet und dann ausgibt, wie sie in separate Dreiecke aufgeteilt werden sollen.

Die zweite ist eine feste Funktionsstufe, die die angeforderten Dreiecke erzeugt.

Die dritte Stufe ist der Tessellation Evalutation Shader (Domain Shader in D3D), der pro erzeugtem Vertex ausgeführt wird und ihn an der richtigen Stelle basierend auf den Schwerpunktkoordinaten des erzeugten Vertex platziert.

Dies wird für die Detailebene verwendet, um mehr Dreiecke zu erzeugen, wenn sich das Netz näher an der Kamera befindet.

Ratschenfreak
quelle