Der Mesh-Shader ist eine moderne, compute-artige Shader-Stufe, die die klassische Geometrie-Verarbeitung der Grafik-Pipeline neu organisiert. Er wurde 2018 von Nvidia mit der Turing-Architektur eingeführt und ist Teil von DirectX 12 Ultimate sowie der Vulkan-Erweiterung VK_EXT_mesh_shader.

Mesh- und Task-Shader

Statt der fest verdrahteten Abfolge aus Vertex-, Geometry- und Tessellation-Stufe arbeiten Mesh-Shader in Workgroups ähnlich wie Compute-Shader. Jede Workgroup erzeugt über ein gemeinsames, beschreibbares Speicherfenster direkt ihre eigenen Dreiecke (Meshlets). Ein optionaler Task-Shader (in DirectX Amplification-Shader genannt) läuft davor und kann ganze Workgroups samt ihrer Geometrie per Culling verwerfen, bevor der Mesh-Shader startet.

Vorteile

  • Flexibilität: Entwickler bestimmen selbst, wie Geometrie erzeugt, verfeinert oder verworfen wird — ohne die Einschränkungen von Geometry- oder Tessellation-Stufe.
  • Effizienz: Objekt- und Meshlet-Culling direkt auf der GPU spart Arbeit in späteren Stufen; Nvidia nennt das Mesh Shading.
  • Skalierbarkeit: Die fein granularen Meshlets eignen sich für Szenen mit enormer geometrischer Dichte, wie sie etwa Virtualisierungstechniken (Nanite-artige Ansätze) nutzen.

Damit löst der Mesh-Shader zunehmend den Geometry-Shader und den Tessellation-Shader ab, auch wenn die klassischen Stufen aus Kompatibilitätsgründen weiter unterstützt werden. Gegenüber dem allgemeinen Compute-Shader ist der Mesh-Shader auf die Rasterisierung ausgerichtet und speist seine Ergebnisse direkt in die nachfolgenden Stufen wie die Rasterisierung ein.

Verwandte Grundlagen: Shader, GPU, Vertex-Shader.