Ein Shader ist ein kleines Programm, das auf der Grafikkarte (GPU) läuft und für jeden Datenpunkt der Grafik-Pipeline berechnet, wie er im Bild erscheint. Shader bestimmen zum Beispiel, wo ein Dreieck liegt, wie Licht auf eine Oberfläche fällt und welche Farbe ein Pixel am Ende bekommt.
Vom starren Fließband zum programmierbaren Shader
Bis Ende der 1990er-Jahre war die Grafik-Pipeline fest verdrahtet: Spiele konnten nur die vorinstallierten Beleuchtungs- und Effektfunktionen nutzen. Mit der GeForce-3-Generation (2001) und DirectX 8 hielten erste programmierbare Stufen Einzug. Seit DirectX 9/OpenGL 2.0 (2004) sind Vertex- und Pixel-Shader Standard; moderne APIs wie DirectX 12, Vulkan und WebGPU setzen vollständig auf programmierbare Stufen.
Die wichtigsten Shader-Arten
- Vertex-Shader: läuft einmal pro Eckpunkt (Vertex) und berechnet Position, Verschiebung und Animation — er transformiert 3D-Koordinaten in den Bildraum.
- Fragment-Shader (auch Pixel-Shader): läuft einmal pro Bildpunkt (Fragment) und berechnet die endgültige Farbe aus Material, Licht und Texturen.
- Compute-Shader: nutzt die GPU für allgemeine Berechnungen abseits der Grafik — Details siehe Compute-Shader.
- Geometry-Shader/Tessellation-Shader: erzeugen und verfeinern Geometrie direkt auf der GPU.
Shader-Sprachen
Shader werden in eigenen Sprachen geschrieben: GLSL für OpenGL, HLSL für DirectX sowie SPIR-V als plattformneutrales Binärformat für Vulkan und WebGPU. Ein Shader-Programm besteht aus mehreren Stufen (Vertex + Fragment), die zusammen eine Pipeline bilden.
Warum Shader so wichtig sind
Shader laufen auf hunderte oder tausende parallele Rechenkerne der GPU verteilt und sind dadurch extrem schnell — sie sind der Grund, warum moderne Spiele in Echtzeit rendern können. Auch jenseits von Spielen stecken Shader in Bildbearbeitung, Videoeffekten und zunehmend in KI-Beschleunigung über die GPU.