Rasterizare — ce este, etapele și principiul de funcționare

Autor: IT Sectr Publicat: 2026-06-11 Timp de citire: 10 min

Rasterizarea — este procesul de transformare a descrierii vectoriale a primitivelor tridimensionale (triunghiuri, linii, puncte) într-un set de pixeli (fragmente) pentru afișarea pe ecran. Conform Khronos Group, 2025, rasterizarea este o etapă automată (neprogramabilă) a conductei grafice, situată între Vertex Shader și Fragment Shader. Rasterizarea determină care pixeli ai ecranului aparțin cărui triunghi și calculează atributele interpolate pentru fiecare fragment.

Principalele

  • Rasterizarea — transformarea primitivelor vectoriale în imagine raster (pixeli).
  • Scanline conversion — algoritmul de bază care determină acoperirea pixelilor de către triunghi.
  • Interpolarea atributelor — calculul culorii, coordonatelor de textură și normalelor pentru fiecare fragment.
  • MSAA — multisampling care netezește marginile în trepte (aliasing) la rasterizare.
  • Performanța rasterizării depinde de numărul de triunghiuri și rezoluția ecranului.

Ce este rasterizarea?

Rasterizarea — este etapa conductei grafice care transformă primitivele geometrice (triunghiuri, linii) într-un set de fragmente pentru procesarea ulterioară de către Fragment Shader. Datele de intrare — vârfurile triunghiului în coordonate ecran și atributele lor (culoare, normale, UV). Ieșire — set de fragmente cu atribute interpolate.

Spre deosebire de shader-ele programabile (Vertex și Fragment Shader), rasterizarea este o etapă fixă (neprogramabilă). Dezvoltatorul nu poate modifica algoritmul de rasterizare, dar poate gestiona parametrii acestuia: modul de tăiere (culling), lățimea liniei, deplasarea adâncimii (polygon offset) și multisampling-ul.

Rolul rasterizării în grafica real-time

Practic întreaga grafică modernă real-time — jocuri, UI, AR/VR — utilizează rasterizarea. Este cea mai performantă metodă de randare, capabilă să proceseze milioane de triunghiuri per cadru la 60 FPS. Rasterizatoarele GPU sunt optimizate pentru procesarea paralelă a mii de triunghiuri simultan prin blocuri specializate ROP (Render Output Units).

Cum funcționează rasterizarea?

Rasterizarea triunghiului începe după ce Vertex Shader a transformat vârfurile în coordonate ecran. GPU ia cele trei vârfuri ale triunghiului și determină care pixeli ai ecranului se află în interiorul acestui triunghi.

Etapele rasterizării triunghiului

Procesul include trei pași consecutivi: determinarea bounding box a triunghiului în pixeli — verificarea fiecărui pixel din interiorul bounding box pentru apartenența la triunghi (edge function) — calculul atributelor interpolate (coordonate baricentrice) pentru fiecare pixel acoperit. Edge function — este o ecuație liniară care determină de ce parte a muchiei triunghiului se află punctul.

EtapaDescriereRezultat
ClippingDecuparea triunghiurilor în afara limitelor viewportPrimitive vizibile
Viewport transformTransformarea în coordonate ecranCoordonate pixel
Triangle setupCalculul edge-funcțiilor și bounding boxParametri de rasterizare
Fragment generationVerificarea acoperirii și interpolareaFragmente + atribute

Algoritmi de rasterizare

Rasterizarea poate fi implementată prin diverși algoritmi, fiecare având propriile compromisuri între performanță și calitate. GPU-urile moderne utilizează o combinație de mai multe abordări.

Algoritmul Scanline

Algoritmul clasic de rasterizare, dezvoltat pentru primele GPU-uri. Triunghiul este procesat linie cu linie (scanline): pentru fiecare linie a ecranului se determină punctele de intrare și ieșire ale triunghiului, iar toți pixelii dintre ele sunt umpluți. Scanline conversion este eficient pentru triunghiuri mari, dar necesită logică complexă pentru triunghiuri de formă arbitrară.

Metoda Half-space (edge function)

GPU-urile moderne utilizează metoda de rasterizare half-space: pentru fiecare latură a triunghiului se calculează edge function — o ecuație liniară, pozitivă de o parte și negativă de cealaltă. Pixelul aparține triunghiului dacă toate cele trei edge functions sunt pozitive. Rasterizarea half-space se paralelizează ușor și se potrivește bine cu arhitecturile SIMD ale GPU-urilor.

Rasterizarea Tile-Based (TBR)

GPU-urile mobile (Qualcomm Adreno, ARM Mali) utilizează Tile-Based Rendering (TBR). Ecranul este împărțit în tile-uri mici (16×16 sau 32×32 pixeli), iar rasterizarea se execută pentru fiecare tile separat. Aceasta minimizează numărul de accesări la memoria video prin stocarea bufferului de cadre în memoria locală rapidă (tile memory). TBR reduce consumul de energie, ceea ce este critic pentru dispozitivele mobile.

Rasterizare vs Ray Tracing

Rasterizarea și ray tracing — două abordări fundamental diferite pentru randarea graficii 3D. Rasterizarea domină în aplicațiile real-time, ray tracing — în randarea offline și pătrunde treptat în real-time (pe GPU-uri compatibile cu RTX).

ParametruRasterizareRay Tracing
PrincipiuTriunghi → fragmenteRază → intersectare cu scena
VitezăFoarte rapid (milioane de triunghiuri/cadru)Lent (mii de raze/cadru)
CalitateNecesită tehnici suplimentare (umbre, reflexii)Umbre și reflexii fizic corecte
GPU-uri mobileMetodă standardSuport limitat (A17 Pro, Snapdragon Gen 3)
Consum energeticScăzutRidicat

MSAA și netezirea la rasterizare

La rasterizare apare problema aliasing-ului — margini în trepte (jaggies) la granițele triunghiurilor. Aceasta se întâmplă deoarece pixelul este discret și nu poate fi parțial acoperit de triunghi. Pentru combaterea aliasing-ului se utilizează multisampling-ul (MSAA).

Cum funcționează MSAA

MSAA (Multisample Anti-Aliasing) execută rasterizarea cu frecvență de eșantionare mărită (2x, 4x, 8x). În loc de un eșantion pe pixel, se utilizează mai multe sub-eșantioane, fiecare fiind verificat pentru acoperirea de către triunghi. MSAA 4x procesează 4 sub-eșantioane pe pixel, oferind o netezire vizibilă a marginilor fără a crește complet rezoluția de randare.

FXAA și alte metode post-proces

Spre deosebire de MSAA, metodele de netezire post-proces (FXAA, SMAA, TAA) funcționează după rasterizare, analizând imaginea finală. FXAA (Fast Approximate Anti-Aliasing) identifică marginile imaginii și aplică estompare pentru netezire, funcționând semnificativ mai rapid decât MSAA, dar cu un rezultat de calitate inferioară.

Rasterizarea pe GPU și optimizare

Rasterizarea pe GPU-urile moderne este executată de blocuri hardware specializate — ROP (Render Output Units). Numărul de ROP influențează direct viteza de umplere (fill rate) — numărul de pixeli pe care GPU-ul îi poate procesa pe secundă.

Factori de performanță ai rasterizării

  • Triangle count — numărul de triunghiuri per cadru. Fiecare triunghi necesită overhead pentru setup și testarea muchiilor.
  • Fill rate — numărul de pixeli procesați de blocurile ROP pe secundă. Depinde de frecvența de ceas a GPU-ului și numărul de ROP.
  • Overdraw — rasterizarea repetată a unui pixel din cauza suprapunerii triunghiurilor. Se optimizează prin sortarea obiectelor după adâncime.

Optimizarea rasterizării pentru GPU-uri mobile

Pentru GPU-urile mobile (Tile-Based Rendering) sunt critic importante: minimizarea overdraw prin respingerea timpurie (early-Z), utilizarea back-face culling pentru eliminarea triunghiurilor invizibile și eliminarea suprafețelor ascunse (occlusion culling) pentru respingerea triunghiurilor complet acoperite de alte obiecte.

Întrebări frecvente

Ce este rasterizarea în cuvinte simple?

Rasterizarea este procesul de transformare a triunghiurilor în pixeli pe ecran. GPU ia un triunghi tridimensional, determină ce pixeli ai ecranului acoperă și îi transmite Fragment Shader pentru colorare.

Cu ce se deosebește rasterizarea de ray tracing?

Rasterizarea proiectează triunghiurile pe ecran și determină acoperirea pixelilor (foarte rapid). Ray tracing trimite raze de la cameră și verifică intersectarea cu geometria (fizic mai precis, dar semnificativ mai lent).

De ce este necesară netezirea (anti-aliasing) la rasterizare?

La rasterizare, pixelul fie aparține complet triunghiului, fie nu — de aici marginile în trepte (aliasing). MSAA netezește marginile prin multiple sub-eșantioane pe pixel, iar FXAA aplică un filtru imaginii finite.

Se poate programa etapa de rasterizare?

Nu, rasterizarea este o etapă fixă a conductei grafice. Dezvoltatorul nu poate modifica algoritmul, dar poate gestiona setările: culling, polygon offset, modul de rasterizare (puncte, linii, triunghiuri) și parametrii MSAA.

De ce GPU-urile mobile utilizează Tile-Based Rendering?

Tile-Based Rendering (TBR) împarte ecranul în tile-uri și le procesează în memoria locală rapidă, nu în VRAM globală. Aceasta reduce radical consumul de energie și lățimea de bandă, ceea ce este critic pentru dispozitivele mobile cu alimentare pe baterie.

Rezumat

  • Rasterizarea — transformarea triunghiurilor vectoriale în fragmente raster pentru afișarea pe ecran.
  • Half-space — algoritmul principal de rasterizare în GPU-urile moderne.
  • Tile-Based Rendering — arhitectura de rasterizare utilizată în GPU-urile mobile (Adreno, Mali).
  • Aliasing — problema marginilor în trepte, rezolvată prin MSAA, FXAA sau TAA.
  • Fill rate — parametrul cheie de performanță al rasterizării, dependent de numărul blocurilor ROP.
  • Overdraw — rasterizarea repetată a pixelilor, optimizată prin early-Z și occlusion culling.
  • Ray Tracing — metodă alternativă care asigură randare fizic corectă în schimbul performanței.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și