Rasterisatie — is het proces van het omzetten van een vectorbeschrijving van driedimensionale primitieven (driehoeken, lijnen, punten) naar een set pixels (fragmenten) voor weergave op het scherm. Volgens Khronos Group, 2025 is rasterisatie een automatische (niet-programmeerbare) fase van de grafische pijplijn, gelegen tussen Vertex Shader en Fragment Shader. Rasterisatie bepaalt welke pixels van het scherm bij welke driehoek horen en berekent geïnterpoleerde attributen voor elk fragment.
Belangrijkste
Rasterisatie — is de fase van de grafische pijplijn die geometrische primitieven (driehoeken, lijnen) omzet in een set fragmenten voor verdere verwerking door de Fragment Shader. Invoergegevens — hoekpunten van de driehoek in schermcoördinaten en hun attributen (kleur, normalen, UV). Uitvoer — set fragmenten met geïnterpoleerde attributen.
In tegenstelling tot programmeerbare shaders (Vertex en Fragment Shader) is rasterisatie een vaste (niet-programmeerbare) fase. De ontwikkelaar kan het rasterisatie-algoritme niet wijzigen, maar kan de parameters ervan beheren: clipping-modus (culling), lijnbreedte, diepteverschuiving (polygon offset) en multisampling.
Vrijwel alle moderne real-time graphics — games, UI, AR/VR — gebruiken rasterisatie. Het is de meest performante renderingsmethode, die miljoenen driehoeken per frame kan verwerken bij 60 FPS. GPU-rasterizers zijn geoptimaliseerd voor parallelle verwerking van duizenden driehoeken tegelijk via gespecialiseerde ROP-blokken (Render Output Units).
Rasterisatie van een driehoek begint nadat de Vertex Shader de hoekpunten heeft omgezet naar schermcoördinaten. De GPU neemt de drie hoekpunten van de driehoek en bepaalt welke pixels van het scherm zich binnen deze driehoek bevinden.
Het proces omvat drie opeenvolgende stappen: bepaling van de bounding box van de driehoek in pixels — controle van elke pixel binnen de bounding box op behoren tot de driehoek (edge function) — berekening van geïnterpoleerde attributen (barycentrische coördinaten) voor elke bedekte pixel. Edge function — een lineaire vergelijking die bepaalt aan welke kant van de rand van de driehoek een punt zich bevindt.
| Fase | Beschrijving | Resultaat |
|---|---|---|
| Clipping | Afknippen van driehoeken buiten de viewport-grenzen | Zichtbare primitieven |
| Viewport transform | Omzetting naar schermcoördinaten | Pixelcoördinaten |
| Triangle setup | Berekening van edge-functies en bounding box | Rasterisatieparameters |
| Fragment generation | Controle van bedekking en interpolatie | Fragmenten + attributen |
Rasterisatie kan worden geïmplementeerd met verschillende algoritmen, elk met zijn eigen afwegingen tussen prestaties en kwaliteit. Moderne GPU's gebruiken een combinatie van meerdere benaderingen.
Het klassieke rasterisatie-algoritme, ontwikkeld voor vroege GPU's. De driehoek wordt regel voor regel (scanline) verwerkt: voor elke schermregel worden de in- en uitgangspunten van de driehoek bepaald en alle pixels ertussen worden opgevuld. Scanline conversion is efficiënt voor grote driehoeken, maar vereist complexe logica voor driehoeken van willekeurige vorm.
Moderne GPU's gebruiken de half-space rasterisatiemethode: voor elke zijde van de driehoek wordt een edge function berekend — een lineaire vergelijking, positief aan de ene kant en negatief aan de andere. Een pixel behoort tot de driehoek als alle drie edge functions positief zijn. Half-space rasterisatie is eenvoudig te paralleliseren en past goed bij SIMD-architecturen van GPU's.
Mobiele GPU's (Qualcomm Adreno, ARM Mali) gebruiken Tile-Based Rendering (TBR). Het scherm wordt verdeeld in kleine tiles (16×16 of 32×32 pixels) en rasterisatie wordt voor elke tile afzonderlijk uitgevoerd. Dit minimaliseert het aantal toegangen tot videogeheugen door de framebuffer op te slaan in snel lokaal geheugen (tile memory). TBR vermindert het energieverbruik, wat kritisch is voor mobiele apparaten.
Rasterisatie en ray tracing — twee fundamenteel verschillende benaderingen voor 3D-rendering. Rasterisatie domineert in real-time toepassingen, ray tracing — in offline rendering en dringt geleidelijk door in real-time (op RTX-compatibele GPU's).
| Parameter | Rasterisatie | Ray Tracing |
|---|---|---|
| Principe | Driehoek → fragmenten | Straal → snijpunt met scène |
| Snelheid | Zeer snel (miljoenen driehoeken/frame) | Langzaam (duizenden stralen/frame) |
| Kwaliteit | Vereist extra technieken (schaduwen, reflecties) | Fysiek correcte schaduwen en reflecties |
| Mobiele GPU's | Standaard methode | Beperkte ondersteuning (A17 Pro, Snapdragon Gen 3) |
| Energieverbruik | Laag | Hoog |
Bij rasterisatie ontstaat het probleem van aliasing — getrapte randen (jaggies) op de grenzen van driehoeken. Dit gebeurt omdat een pixel discreet is en niet gedeeltelijk door een driehoek kan worden bedekt. Voor de bestrijding van aliasing wordt multisampling (MSAA) toegepast.
MSAA (Multisample Anti-Aliasing) voert rasterisatie uit met verhoogde samplefrequentie (2x, 4x, 8x). In plaats van één sample per pixel worden meerdere sub-samples gebruikt, die elk worden gecontroleerd op bedekking door de driehoek. MSAA 4x verwerkt 4 sub-samples per pixel, wat een merkbare gladmaking van randen oplevert zonder de volledige renderresolutie te verhogen.
In tegenstelling tot MSAA werken post-process anti-aliasing methoden (FXAA, SMAA, TAA) na rasterisatie, door het uiteindelijke beeld te analyseren. FXAA (Fast Approximate Anti-Aliasing) detecteert de randen van het beeld en past vervaging toe voor gladmaking, aanzienlijk sneller dan MSAA, maar met een minder kwalitatief resultaat.
Rasterisatie op moderne GPU's wordt uitgevoerd door gespecialiseerde hardwareblokken — ROP (Render Output Units). Het aantal ROP's beïnvloedt direct de vulsnelheid (fill rate) — het aantal pixels dat de GPU per seconde kan verwerken.
Voor mobiele GPU's (Tile-Based Rendering) zijn kritisch belangrijk: minimalisatie van overdraw door vroege afwijzing (early-Z), gebruik van back-face culling voor het verwijderen van onzichtbare driehoeken en verborgen oppervlakteverwijdering (occlusion culling) voor het afwijzen van driehoeken die volledig worden bedekt door andere objecten.
Veelgestelde vragen
Rasterisatie is het proces van het omzetten van driehoeken naar pixels op het scherm. De GPU neemt een driedimensionale driehoek, bepaalt welke pixels van het scherm hij bedekt en geeft ze door aan de Fragment Shader voor inkleuring.
Rasterisatie projecteert driehoeken op het scherm en bepaalt pixelbedekking (zeer snel). Ray tracing stuurt stralen van de camera en controleert snijpunten met geometrie (fysiek nauwkeuriger, maar aanzienlijk langzamer).
Bij rasterisatie behoort een pixel volledig tot een driehoek of niet — vandaar getrapte randen (aliasing). MSAA maakt randen glad door meerdere sub-samples per pixel, en FXAA past een filter toe op het voltooide beeld.
Nee, rasterisatie is een vaste fase van de grafische pijplijn. De ontwikkelaar kan het algoritme niet wijzigen, maar kan wel instellingen beheren: culling, polygon offset, rasterisatiemodus (punten, lijnen, driehoeken) en MSAA-parameters.
Tile-Based Rendering (TBR) verdeelt het scherm in tiles en verwerkt ze in snel lokaal geheugen, niet in globale VRAM. Dit vermindert drastisch het energieverbruik en de bandbreedte, wat kritisch is voor batterijgevoede mobiele apparaten.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook