Rasterization (Rasterisierung) ist der Prozess der Umwandlung einer Vektorbeschreibung dreidimensionaler Primitive (Dreiecke, Linien, Punkte) in eine Menge von Pixeln (Fragmente) zur Anzeige auf einem Bildschirm. Laut Khronos Group, 2025 ist die Rasterisierung eine automatische (nicht programmierbare) Stufe der Grafikpipeline, die zwischen Vertex Shader und Fragment Shader liegt. Rasterization bestimmt, welche Bildschirmpixel zu welchem Dreieck gehören, und berechnet interpolierte Attribute für jedes Fragment.
Das Wichtigste
Rasterization ist eine Stufe der Grafikpipeline, die geometrische Primitive (Dreiecke, Linien) in eine Menge von Fragmenten zur weiteren Verarbeitung durch den Fragment Shader umwandelt. Die Eingabedaten sind die Dreiecksscheitel in Bildschirmkoordinaten und ihre Attribute (Farbe, Normalen, UV). Die Ausgabe ist eine Menge von Fragmenten mit interpolierten Attributen.
Im Gegensatz zu programmierbaren Shadern (Vertex Shader und Fragment Shader) ist die Rasterisierung eine feste (nicht programmierbare) Stufe. Der Entwickler kann den Rasterisierungsalgorithmus nicht ändern, aber seine Parameter steuern: Culling-Modus, Linienbreite, Polygon-Offset und Multisampling.
Nahezu alle modernen Echtzeitgrafiken — Spiele, UI, AR/VR — verwenden Rasterisierung. Es ist die leistungsfähigste Rendering-Methode, die Millionen von Dreiecken pro Frame bei 60 FPS verarbeiten kann. GPU-Rasterisierer sind für die parallele Verarbeitung Tausender Dreiecke gleichzeitig über spezialisierte ROP-Blöcke (Render Output Units) optimiert.
Die Dreiecksrasterisierung beginnt, nachdem der Vertex Shader die Scheitelpunkte in Bildschirmkoordinaten transformiert hat. Die GPU nimmt die drei Scheitelpunkte eines Dreiecks und bestimmt, welche Bildschirmpixel innerhalb dieses Dreiecks liegen.
Der Prozess umfasst drei aufeinanderfolgende Schritte: Bestimmen der Bounding Box des Dreiecks in Pixeln — Überprüfen jedes Pixels innerhalb der Bounding Box auf Dreieckszugehörigkeit (Edge Function) — Berechnen interpolierter Attribute (baryzentrische Koordinaten) für jedes abgedeckte Pixel. Die Edge Function ist eine lineare Gleichung, die bestimmt, auf welcher Seite der Dreieckskante ein Punkt liegt.
| Phase | Beschreibung | Ergebnis |
|---|---|---|
| Clipping | Beschneiden von Dreiecken außerhalb der Viewport-Grenzen | Sichtbare Primitive |
| Viewport-Transformation | Umwandlung in Bildschirmkoordinaten | Pixelkoordinaten |
| Dreiecks-Setup | Berechnung von Edge Functions und Bounding Box | Rasterisierungsparameter |
| Fragmenterzeugung | Abdeckungstest und Interpolation | Fragmente + Attribute |
Rasterization kann mit verschiedenen Algorithmen implementiert werden, die jeweils ihre eigenen Kompromisse zwischen Leistung und Qualität bieten. Moderne GPUs verwenden eine Kombination mehrerer Ansätze.
Der klassische Rasterisierungsalgorithmus, der für frühe GPUs entwickelt wurde. Das Dreieck wird Zeile für Zeile (Scanline) verarbeitet: Für jede Bildschirmzeile werden die Ein- und Austrittspunkte des Dreiecks bestimmt, und alle Pixel dazwischen werden gefüllt. Scanline conversion ist effizient für große Dreiecke, erfordert aber komplexe Logik für Dreiecke beliebiger Form.
Moderne GPUs verwenden die Half-Space-Rasterisierungsmethode: Für jede Seite des Dreiecks wird eine Edge Function berechnet — eine lineare Gleichung, die auf einer Seite positiv und auf der anderen negativ ist. Ein Pixel gehört zum Dreieck, wenn alle drei Edge Functions positiv sind. Half-space rasterization ist leicht parallelisierbar und gut für SIMD-GPU-Architekturen geeignet.
Mobile GPUs (Qualcomm Adreno, ARM Mali) verwenden Tile-Based Rendering (TBR). Der Bildschirm wird in kleine Kacheln (16x16 oder 32x32 Pixel) unterteilt, und die Rasterisierung wird für jede Kachel separat durchgeführt. Dies minimiert Speicherzugriffe, indem der Framebuffer in schnellem lokalen Speicher (Kachelspeicher) gehalten wird. TBR reduziert den Stromverbrauch, was für mobile Geräte entscheidend ist.
Rasterization und Ray Tracing sind zwei grundlegend unterschiedliche Ansätze für das 3D-Grafik-Rendering. Die Rasterisierung dominiert in Echtzeitanwendungen, während Ray Tracing im Offline-Rendering verwendet wird und allmählich in Echtzeit Einzug hält (auf RTX-kompatiblen GPUs).
| Parameter | Rasterisierung | Ray Tracing |
|---|---|---|
| Prinzip | Dreieck → Fragmente | Strahl → Szenenschnittpunkt |
| Geschwindigkeit | Sehr schnell (Millionen Dreiecke/Frame) | Langsam (Tausende Strahlen/Frame) |
| Qualität | Erfordert zusätzliche Techniken (Schatten, Reflexionen) | Physikalisch korrekte Schatten und Reflexionen |
| Mobile GPUs | Standardmethode | Begrenzte Unterstützung (A17 Pro, Snapdragon Gen 3) |
| Stromverbrauch | Niedrig | Hoch |
Die Rasterisierung führt zum Problem des Aliasing — gezackte Kanten (Jaggies) an Dreiecksgrenzen. Dies tritt auf, weil ein Pixel diskret ist und nicht teilweise von einem Dreieck bedeckt werden kann. Zur Bekämpfung von Aliasing wird Multisampling (MSAA) eingesetzt.
MSAA (Multisample Anti-Aliasing) führt die Rasterisierung mit erhöhter Abtastrate (2x, 4x, 8x) durch. Anstelle eines Samples pro Pixel werden mehrere Sub-Samples verwendet, die jeweils auf Dreiecksabdeckung getestet werden. MSAA 4x verarbeitet 4 Sub-Samples pro Pixel und bietet eine merkliche Kantenglättung, ohne die Rendering-Auflösung vollständig zu erhöhen.
Im Gegensatz zu MSAA arbeiten Post-Process-Anti-Aliasing-Methoden (FXAA, SMAA, TAA) nach der Rasterisierung, indem sie das endgültige Bild analysieren. FXAA (Fast Approximate Anti-Aliasing) erkennt Bildkanten und wendet Weichzeichnung zur Glättung an. Es arbeitet deutlich schneller als MSAA, jedoch mit geringerer Qualität.
Rasterization auf modernen GPUs wird von spezialisierten Hardware-Blöcken — ROP (Render Output Units) — durchgeführt. Die Anzahl der ROPs beeinflusst direkt die Füllrate (Fill Rate) — die Anzahl der Pixel, die die GPU pro Sekunde verarbeiten kann.
Für mobile GPUs (Tile-basiertes Rendering) sind entscheidend: Minimierung von Overdraw durch Early-Z-Rejection, Verwendung von Back-Face-Culling zum Entfernen unsichtbarer Dreiecke und Occlusion Culling zum Verwerfen von Dreiecken, die vollständig von anderen Objekten verdeckt werden.
Häufig gestellte Fragen
Rasterisierung ist der Prozess, Dreiecke in Pixel auf dem Bildschirm umzuwandeln. Die GPU nimmt ein dreidimensionales Dreieck, bestimmt, welche Bildschirmpixel es abdeckt, und übergibt sie an den Fragment Shader zum Einfärben.
Rasterisierung projiziert Dreiecke auf den Bildschirm und bestimmt die Pixelabdeckung (sehr schnell). Ray Tracing sendet Strahlen von der Kamera und prüft die Schnittpunkte mit der Geometrie (physikalisch genauer, aber deutlich langsamer).
Bei der Rasterisierung gehört ein Pixel entweder vollständig zu einem Dreieck oder nicht — daher entstehen gezackte Kanten (Aliasing). MSAA glättet Kanten mit mehreren Sub-Samples pro Pixel, während FXAA einen Filter auf das endgültige Bild anwendet.
Nein, die Rasterisierung ist eine feste Stufe der Grafikpipeline. Der Entwickler kann den Algorithmus nicht ändern, aber Einstellungen steuern: Culling, Polygon-Offset, Rasterisierungsmodus (Punkte, Linien, Dreiecke) und MSAA-Parameter.
Tile-Based Rendering (TBR) teilt den Bildschirm in Kacheln und verarbeitet sie in schnellem lokalem Speicher statt in globalem VRAM. Dies reduziert Stromverbrauch und Bandbreite drastisch, was für batteriebetriebene mobile Geräte entscheidend ist.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch