Der Geometry-Shader ist eine programmierbare Stufe der Grafik-Pipeline, die nach dem Vertex-Shader läuft. Während der Vertex-Shader jeden Eckpunkt einzeln bearbeitet, arbeitet der Geometry-Shader auf ganzen Primitiven (Punkten, Linien oder Dreiecken) und kann neue Geometrie erzeugen, verändern oder verwerfen.

Was der Geometry-Shader kann

Anders als der Vertex-Shader erhält der Geometry-Shader alle Eckpunkte eines Primitivs auf einmal und kennt dadurch die Nachbarschaftsbeziehungen. Pro Eingabe-Primitiv gibt er null, ein oder mehrere Ausgabe-Primitive aus. Typische Einsatzgebiete:

  • Geometrie erzeugen: Gras, Haare oder Partikel aus wenigen Kontroll-Punkten sprießen lassen.
  • Silhouetten erweitern: Schattenvolumen (Shadow Volumes) direkt aus Modellkanten extrudieren.
  • Primitive verwerfen: Backface-Culling oder Detail-Auswahl auf GPU-Seite.
  • Punktwolken aufbereiten: Punkte in bildschirmfüllende Quads umwandeln.

Grenzen

Der Geometry-Shader gilt als schwer zu optimieren: Seine Ausgabemenge ist dynamisch, was die Hardware-Planung erschwert, und viele Grafikkarten verarbeiten ihn langsamer als vergleichbare Stufen. In modernen APIs wird er zunehmend durch den Mesh-Shader ersetzt, der flexibler und effizienter arbeitet. Eingeführt wurde er mit DirectX 10 (2006) und OpenGL 3.2 (2009).

Verwandte Grundlagen: Grafik-Pipeline, Tessellation-Shader, Shader.