Die Tessellation (Vergitterung) unterteilt grobe Ausgangsnetze in feine Dreiecksnetze — direkt auf der GPU. Der Tessellation-Shader ist dabei keine einzelne Stufe, sondern ein Block aus mehreren Teilstufen, die in DirectX 11 (2009) und OpenGL 4.0 (2010) eingeführt wurden.
Die drei Teilstufen
- Hull-Shader (in GLSL Tessellation-Control-Shader): bearbeitet das Eingabe-Patch (Dreieck, Viereck oder Linie) und berechnet die Tess-Faktoren — also wie fein unterteilt wird.
- Tessellator: feste Hardware-Einheit, die anhand der Tess-Faktoren neue Eckpunkte und Dreiecke erzeugt.
- Domain-Shader (in GLSL Tessellation-Evaluation-Shader): positioniert die neu erzeugten Eckpunkte, etwa durch Verschieben entlang einer Höhenkarte oder einer Bézier-Fläche.
Einsatzgebiete
Klassisch ist Displacement Mapping: Ein grobes Modell wird fein unterteilt und die neuen Punkte über eine Textur versetzt, wodurch Gelände und Details ohne riesige Modelldaten entstehen. Auch glatte Kurven und Flächen (Subdivision-Surfaces) lassen sich so in Echtzeit darstellen. Die Detailstufe (Level of Detail) kann adaptiv anhand der Entfernung zur Kamera gewählt werden.
Der Tessellation-Shader steht zwischen Vertex-Shader und Rasterisierung in der Grafik-Pipeline. Er ergänzt den Geometry-Shader: Während dieser neue Primitive erzeugt, verfeinert die Tessellation vorhandene Flächen.
Verwandte Grundlagen: Fragment-Shader, Mesh-Shader, Shader.