Ein Compute-Shader ist ein Shader-Typ, der die massiv parallelen Rechenkerne einer Grafikkarte für allgemeine Berechnungen nutzt — nicht nur zum Zeichnen von Bildern. Er ist die moderne Schnittstelle zwischen Grafik-API und GPGPU-Berechnungen.

Grundprinzip: Arbeit in Gruppen

Statt Dreiecke zu verarbeiten, arbeitet ein Compute-Shader auf einem abstrakten Gitter aus Arbeitsgruppen (Workgroups). Jede Gruppe besteht aus vielen Threads (bei Vulkan oft 32–256), die gleichzeitig laufen. Die GPU führt diese Gruppen auf ihren Shader-Kernen aus; über gemeinsamen Speicher innerhalb einer Gruppe können Threads Daten austauschen.

Compute-Shader vs. klassische Shader

Während Vertex- und Fragment-Shader fest in die Grafik-Pipeline eingebunden sind, läuft ein Compute-Shader unabhängig davon in einer eigenen Compute-Pipeline. Er hat keinen Zugriff auf Rasterisierung oder Tiefentest, dafür aber auf flexible Speicherzugriffe (Shader Storage Buffers, strukturierte Bilder) — ideal für Algorithmen, die nicht ins Schema „Dreieck rein, Pixel raus" passen.

Einsatzgebiete

  • Physiksimulation: Partikel, Flüssigkeiten, Kollisionen
  • Bild- und Videobearbeitung: Filter, Schärfen, Effekte
  • Künstliche Intelligenz: Matrix-Operationen für neuronale Netze
  • Datenverarbeitung: Sortieren, Suchen, Hashen großer Datenmengen
  • Raytracing-Nachbearbeitung, Tone Mapping, Upscaling

Abgrenzung zu CUDA und OpenCL

Compute-Shader sind in moderne Grafik-APIs eingebettet: In Vulkan und WebGPU sind sie Pflicht, in OpenGL seit Version 4.3 verfügbar. CUDA (Nvidia) und OpenCL sind eigenständige GPGPU-APIs mit ähnlichen Konzepten (Kernel statt Compute-Shader). Compute-Shader haben den Vorteil, direkt mit der Grafik-Pipeline Daten zu teilen — GPU-seitig, ohne Umweg über die CPU.

Verwandte Grundlagen: Shader, Grafik-Pipeline, GPGPU, SIMD, GPU.