Rastrering — är processen att omvandla en vektorbeskrivning av tredimensionella primitiver (trianglar, linjer, punkter) till en uppsättning pixlar (fragment) för visning på skärmen. Enligt Khronos Group, 2025 är rastrering ett automatiskt (inte programmerbart) steg i grafikpipelinen, placerat mellan Vertex Shader och Fragment Shader. Rastrering bestämmer vilka pixlar på skärmen som tillhör vilken triangel och beräknar interpolerade attribut för varje fragment.
Huvudpunkter
Rastrering — är steget i grafikpipelinen som omvandlar geometriska primitiver (trianglar, linjer) till en uppsättning fragment för vidare bearbetning av Fragment Shadern. Indata — triangelns hörn i skärmkoordinater och deras attribut (färg, normaler, UV). Utdata — uppsättning fragment med interpolerade attribut.
Till skillnad från programmerbara shaders (Vertex och Fragment Shader) är rastrering ett fast (inte programmerbart) steg. Utvecklaren kan inte ändra rastreringsalgoritmen, men kan hantera dess parametrar: klippläge (culling), linjebredd, djupförskjutning (polygon offset) och multisampling.
Praktiskt taget all modern realtidsgrafik — spel, UI, AR/VR — använder rastrering. Det är den mest prestandaeffektiva renderingsmetoden, kapabel att bearbeta miljontals trianglar per bildruta vid 60 FPS. GPU-rastrerare är optimerade för parallell bearbetning av tusentals trianglar samtidigt genom specialiserade ROP-block (Render Output Units).
Rastrering av en triangel börjar efter att Vertex Shadern har omvandlat hörnen till skärmkoordinater. GPU:n tar triangelns tre hörn och bestämmer vilka pixlar på skärmen som befinner sig inuti denna triangel.
Processen omfattar tre på varandra följande steg: bestämning av triangelns bounding box i pixlar — kontroll av varje pixel innanför bounding boxen för tillhörighet till triangeln (edge function) — beräkning av interpolerade attribut (barycentriska koordinater) för varje täckt pixel. Edge function — är en linjär ekvation som bestämmer på vilken sida av triangelns kant en punkt befinner sig.
| Steg | Beskrivning | Resultat |
|---|---|---|
| Clipping | Avklippning av trianglar utanför viewport-gränserna | Synliga primitiver |
| Viewport transform | Omvandling till skärmkoordinater | Pixelkoordinater |
| Triangle setup | Beräkning av edge-funktioner och bounding box | Rastreringsparametrar |
| Fragment generation | Kontroll av täckning och interpolering | Fragment + attribut |
Rastrering kan implementeras med olika algoritmer, var och en med sina egna avvägningar mellan prestanda och kvalitet. Moderna GPU:er använder en kombination av flera tillvägagångssätt.
Klassisk rastreringsalgoritm utvecklad för tidiga GPU:er. Triangeln bearbetas rad för rad (scanline): för varje skärmrad bestäms triangelns in- och utgångspunkter och alla pixlar däremellan fylls. Scanline conversion är effektivt för stora trianglar, men kräver komplex logik för trianglar med godtycklig form.
Moderna GPU:er använder half-space rastreringsmetoden: för varje sida av triangeln beräknas en edge function — en linjär ekvation, positiv på ena sidan och negativ på den andra. Pixeln tillhör triangeln om alla tre edge functions är positiva. Half-space rastrering är lätt att parallellisera och passar väl för GPU:ers SIMD-arkitekturer.
Mobila GPU:er (Qualcomm Adreno, ARM Mali) använder Tile-Based Rendering (TBR). Skärmen delas in i små tiles (16×16 eller 32×32 pixlar) och rastrering utförs för varje tile separat. Detta minimerar antalet åtkomster till videominnet genom att lagra framebuffern i snabbt lokalt minne (tile memory). TBR minskar energiförbrukningen, vilket är kritiskt för mobila enheter.
Rastrering och ray tracing — två fundamentalt olika tillvägagångssätt för rendering av 3D-grafik. Rastrering dominerar i realtidsapplikationer, ray tracing — i offline-rendering och tränger gradvis in i realtid (på RTX-kompatibla GPU:er).
| Parameter | Rastrering | Ray Tracing |
|---|---|---|
| Princip | Triangel → fragment | Stråle → skärning med scen |
| Hastighet | Mycket snabb (miljontals trianglar/bildruta) | Långsam (tusentals strålar/bildruta) |
| Kvalitet | Kräver ytterligare tekniker (skuggor, reflektioner) | Fysiskt korrekta skuggor och reflektioner |
| Mobila GPU:er | Standardmetod | Begränsat stöd (A17 Pro, Snapdragon Gen 3) |
| Energiförbrukning | Låg | Hög |
Vid rastrering uppstår problemet med aliasing — trappstegskanter (jaggies) vid triangelgränserna. Detta händer eftersom pixeln är diskret och inte kan täckas delvis av en triangel. För att bekämpa aliasing används multisampling (MSAA).
MSAA (Multisample Anti-Aliasing) utför rastrering med ökad samplingsfrekvens (2x, 4x, 8x). Istället för ett sampel per pixel används flera subsampel, som var och en kontrolleras för täckning av triangeln. MSAA 4x bearbetar 4 subsampel per pixel, vilket ger en märkbar utjämning av kanter utan att helt öka renderingsupplösningen.
Till skillnad från MSAA arbetar post-process kantutjämningsmetoder (FXAA, SMAA, TAA) efter rastrering, genom att analysera den slutliga bilden. FXAA (Fast Approximate Anti-Aliasing) detekterar bildens kanter och applicerar oskärpa för utjämning, arbetar betydligt snabbare än MSAA men med mindre kvalitativt resultat.
Rastrering på moderna GPU:er utförs av specialiserade hårdvarublock — ROP (Render Output Units). Antalet ROP påverkar direkt fyllnadshastigheten (fill rate) — antalet pixlar som GPU:n kan bearbeta per sekund.
För mobila GPU:er (Tile-Based Rendering) är kritiskt viktigt: minimering av overdraw genom tidig avvisning (early-Z), användning av back-face culling för att ta bort osynliga trianglar och dold ytborttagning (occlusion culling) för att avvisa trianglar som helt täcks av andra objekt.
Vanliga frågor
Rastrering är processen att omvandla trianglar till pixlar på skärmen. GPU:n tar en tredimensionell triangel, bestämmer vilka pixlar på skärmen den täcker och skickar dem till Fragment Shadern för färgläggning.
Rastrering projicerar trianglar på skärmen och bestämmer pixeltäckning (mycket snabbt). Ray tracing skickar strålar från kameran och kontrollerar skärning med geometri (fysiskt mer exakt men betydligt långsammare).
Vid rastrering tillhör pixeln antingen helt triangeln eller inte — därav trappstegskanter (aliasing). MSAA jämnar ut kanter genom flera subsampel per pixel, och FXAA applicerar ett filter på den färdiga bilden.
Nej, rastrering är ett fast steg i grafikpipelinen. Utvecklaren kan inte ändra algoritmen, men kan hantera inställningarna: culling, polygon offset, rastreringsläge (punkter, linjer, trianglar) och MSAA-parametrar.
Tile-Based Rendering (TBR) delar upp skärmen i tiles och bearbetar dem i snabbt lokalt minne, inte i global VRAM. Detta minskar dramatiskt energiförbrukningen och bandbredden, vilket är kritiskt för batteridrivna mobila enheter.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också