Tessellation

Entscheidend für den Realismus einer 3D-Szene ist der Detailreichtum (Level Of Detail; LOD) der dargestellten 3D-Objekte. Die Anzahl der Details, die wir wahrnehmen können, ist entfernungsabhängig und steigt mit Verringerung des Abstandes rasch an. Da Grafikkarten mit jeder neuen Generation immer leistungsfähiger werden und zudem über mehr und mehr Speicher verfügen, können immer detailreichere Objekte dargestellt werden; nichtsdestotrotz sollte der Detailgrad eines Objektes mit zunehmendem Abstand verringert werden, um die Rechenleistung nicht unnötig zu verschwenden.

In diesem Sinne bietet es sich an, zunächst einmal mehrere Detailstufen (LOD-Stufen) eines 3D-Modells in den Grafikspeicher zu laden und dann zur Laufzeit die zu verwendende LOD-Stufe anhand des momentanen Kameraabstands auszuwählen.

Die Tessellation verfolgt nun einen gänzlich anderen Ansatz – man beschränkt sich darauf, lediglich Low-Poly-Versionen der 3D-Modelle in den Grafikspeicher zu laden und berechnet die zusätzlichen Details in Abhängigkeit vom Kamerabstand zur Laufzeit auf der GPU (Displacement Mapping), wobei die Dreiecksgitter, aus denen die 3D-Modelle aufgebaut sind, entsprechend verfeinert werden (Mesh Refinement, Tessellation).



Vorteile der Tessellation+Displacement Mapping auf einem Blick:

  • Geringere Speicherauslastung auf der Grafikkarte
  • Low-Poly-Modelle lassen sich schneller dynamisch laden (Streaming)
  • Performancegewinn bei der Durchführung rechenintensiver Per-Vertex-Operationen (Bsp. Animationen). Diese lassen sich am Low-Poly-Modell durchführen, bevor das Modell dann im zweiten Schritt tesselliert wird (siehe Instanced Tessellation).


Links: