Ein Geometry-Shader ist ein mögliches Element der Grafikpipeline, die zur Erzeugung einer dreidimensionalen Computergrafik in einer Grafik-Engine benutzt wird. Als Shader in der klassischen Grafikpipeline wird der Geometry-Shader nach dem Vertex-Shader aufgerufen. Er kann neue einfache oder auch sogenannte primitive Geometrien aus bereits vorhandenen Primitiven (Punkte, Linien, Dreiecke) erzeugen und diese erneut in die Grafikpipeline einfügen. Da das Anlegen neuer Knoten im eigentlichen Sinne keinen Teil des Renderings (Transformation, Beleuchtung, Texturierung) darstellt, nimmt der Geometry-Shader eine Sonderrolle ein.
Weitere Einzelheiten
Typische Anwendungen sind zum Beispiel die Erzeugung von Schattenvolumen, Verteilung der Geometrie auf die Seiten einer Cube-Map oder die Erzeugung von Fell- oder Haargeometrie. Obwohl der Geometry-Shader innerhalb einer Obergrenze beliebige Geometrien erzeugen kann, wird nicht empfohlen, große Mengen davon durch ihn zu erzeugen. In Direct3D 11 wurde dafür die Tesselationseinheit eingeführt und in OpenGL 4.0 der Tessellation-Shader.
Geometry-Shading wird durch nVidias Grafikprozessoren der GeForce-8-Serie und ATIs Grafikprozessoren der Radeon-HD2000-Serie unterstützt. Softwareseitig erfolgt die Programmierung von Geometry-Shadern entweder über die von ab Windows Vista angebotene Schnittstelle Direct3D 10 oder höher oder über OpenGL 3.2. Sie ermöglichen Effekte wie Point Sprite Expansion (Ersetzen von einzelnen Punkten/Partikeln durch Volumendaten) oder auch Shadow Volume Generation (volumenhaft ausgebildeter Schatten ersetzt „flache“ Schattenbilder).
Literatur
- DirectX Software Development Kit Documentation
Weblinks
- MSDN: Geometry-Shader Object (DirectX HLSL), API-Definition aus DirectX (englisch)
- NVIDIA: EXT_geometry_shader4, API-Definition zur gleichnamigen OpenGL-Extension (englisch)