A Rasterization (rasterizáció) a háromdimenziós primitívek (háromszögek, vonalak, pontok) vektoros leírásának képpontokká (fragmentekké) történő átalakításának folyamata, amely megjelenítésre kerül a képernyőn. A Khronos Group, 2025 adatai szerint a rasterizáció a grafikus feldolgozási folyamat automatikus (nem programozható) szakasza, amely a Vertex Shader és a Fragment Shader között helyezkedik el. A Rasterization határozza meg, hogy a képernyő mely képpontjai tartoznak melyik háromszöghöz, és kiszámítja az interpolált attribútumokat minden fragmenthez.
A lényeg
A Rasterization a grafikus feldolgozási folyamat azon szakasza, amely a geometriai primitíveket (háromszögek, vonalak) fragmentekké alakítja a Fragment Shader további feldolgozásához. A bemeneti adatok a háromszög csúcsai képernyőkoordinátákban és azok attribútumai (szín, normálisok, UV). A kimenet interpolált attribútumokkal ellátott fragmentek halmaza.
A programozható shaderekkel (Vertex és Fragment Shader) ellentétben a rasterizáció rögzített (nem programozható) szakasz. A fejlesztő nem változtathatja meg a rasterizációs algoritmust, de szabályozhatja a paramétereit: a vágási módot (culling), a vonalvastagságot, a mélységi eltolást (polygon offset) és a multisamplinget.
Gyakorlatilag minden modern valós idejű grafika — játékok, UI, AR/VR — rasterizációt használ. Ez a leggyorsabb megjelenítési módszer, amely képes milliónyi háromszög feldolgozására kockánként 60 FPS mellett. A GPU-rasterizátorok a háromszögek ezreinek párhuzamos feldolgozására optimalizáltak a speciális ROP (Render Output Units) egységeken keresztül.
A háromszög rasterizációja azután kezdődik, hogy a Vertex Shader képernyőkoordinátákká alakította a csúcsokat. A GPU veszi a háromszög három csúcsát, és meghatározza, hogy a képernyő mely képpontjai találhatók a háromszögön belül.
A folyamat három egymást követő lépést foglal magában: a háromszög bounding box meghatározása képpontokban — a bounding boxon belüli minden képpont ellenőrzése, hogy a háromszöghöz tartozik-e (edge function) — az interpolált attribútumok (barycentric coordinates) kiszámítása minden lefedett képponthoz. Az Edge function egy lineáris egyenlet, amely meghatározza, hogy egy pont a háromszög melyik élének melyik oldalán található.
| Szakasz | Leírás | Eredmény |
|---|---|---|
| Clipping | A háromszögek levágása a viewport határain túl | Látható primitívek |
| Viewport transform | Átalakítás képernyőkoordinátákká | Képpont-koordináták |
| Triangle setup | Az edge-függvények és a bounding box kiszámítása | Rasterizációs paraméterek |
| Fragment generation | Lefedettség ellenőrzése és interpoláció | Fragmentek + attribútumok |
A Rasterization különböző algoritmusokkal valósítható meg, mindegyiknek megvan a maga kompromisszuma a teljesítmény és a minőség között. A modern GPU-k több megközelítés kombinációját használják.
A klasszikus rasterizációs algoritmus, amelyet a korai GPU-khoz fejlesztettek. A háromszöget soronként (scanline) dolgozza fel: minden képernyősorhoz meghatározza a háromszög belépési és kilépési pontjait, és a köztük lévő összes képpontot kitölti. A Scanline conversion a nagy háromszögeknél hatékony, de bonyolult logikát igényel a tetszőleges alakú háromszögeknél.
A modern GPU-k a half-space rasterizációs módszert használják: a háromszög minden oldalához edge function kerül kiszámításra — egy lineáris egyenlet, amely az egyik oldalon pozitív, a másikon negatív. A képpont akkor tartozik a háromszöghöz, ha mindhárom edge function pozitív. A Half-space rasterization könnyen párhuzamosítható, és jól illeszkedik a GPU-k SIMD-architektúráihoz.
A mobil GPU-k (Qualcomm Adreno, ARM Mali) a Tile-Based Rendering (TBR) technikát használják. A képernyő kisebb tile-okra oszlik (16x16 vagy 32x32 képpont), és a rasterizáció minden tile-hoz külön történik. Ez minimalizálja a videómemória-hozzáférések számát azáltal, hogy a képkocka-puffert gyors helyi memóriában (tile memory) tárolja. A TBR csökkenti az energiafogyasztást, ami kritikus a mobileszközöknél.
A Rasterization és a ray tracing két alapvetően különböző megközelítés a 3D-grafika megjelenítésében. A rasterizáció dominál a valós idejű alkalmazásokban, a ray tracing pedig az offline megjelenítésben, és fokozatosan behatol a valós idejű grafikába is (RTX-kompatibilis GPU-ken).
| Paraméter | Rasterization | Ray Tracing |
|---|---|---|
| Elv | Háromszög → fragmentek | Sugár → ütközés a jelenettel |
| Sebesség | Nagyon gyors (millió háromszög/kocka) | Lassú (ezer sugár/kocka) |
| Minőség | További technikákat igényel (árnyékok, visszaverődések) | Fizikailag korrekt árnyékok és visszaverődések |
| Mobil GPU-k | Standard módszer | Korlátozott támogatás (A17 Pro, Snapdragon Gen 3) |
| Energiafogyasztás | Alacsony | Magas |
A rasterizáció során felmerül az aliasing problémája — lépcsős élek (jaggies) a háromszögek határain. Ez azért történik, mert a képpont diszkrét, és a háromszög nem fedheti le részlegesen. Az aliasing leküzdésére multisamplinget (MSAA) használnak.
Az MSAA (Multisample Anti-Aliasing) megnövelt mintavételezési frekvenciával (2x, 4x, 8x) végzi a rasterizációt. Egy képpontonkénti minta helyett több almintát használ, amelyek mindegyikét ellenőrzi a háromszög-lefedettség szempontjából. Az MSAA 4x képpontonként 4 almintát dolgoz fel, ami érezhető élsimítást biztosít anélkül, hogy a megjelenítési felbontást teljesen megnövelné.
Az MSAA-val ellentétben az utófeldolgozási élsimítási módszerek (FXAA, SMAA, TAA) már a rasterizáció után működnek, elemzve a végső képet. Az FXAA (Fast Approximate Anti-Aliasing) meghatározza a kép éleit, és elmosást alkalmaz a simításhoz, lényegesen gyorsabb, mint az MSAA, de kevésbé minőségi eredményt ad.
A Rasterization a modern GPU-kon speciális hardveres egységekkel — ROP (Render Output Units) — történik. A ROP-egységek száma közvetlenül befolyásolja a kitöltési sebességet (fill rate) — azt a képpontszámot, amelyet a GPU másodpercenként fel tud dolgozni.
A mobil GPU-k (Tile-Based Rendering) esetében kritikus fontosságúak: az overdraw minimalizálása korai eldobással (early-Z), a back-face culling használata a láthatatlan háromszögek eltávolításához, valamint a láthatatlan felületek eltávolítása (occlusion culling) azoknak a háromszögeknek az eldobásához, amelyeket más objektumok teljesen eltakarnak.
Gyakran ismételt kérdések
A rasterizáció a háromszögek képpontokká alakításának folyamata a képernyőn. A GPU vesz egy háromdimenziós háromszöget, meghatározza, hogy a képernyő mely képpontjait takarja el, és továbbítja őket a Fragment Shadernek a kiszínezéshez.
A rasterizáció a háromszögeket a képernyőre vetíti, és meghatározza a képpontok lefedettségét (nagyon gyorsan). A sugárkövetés sugarakat bocsát ki a kamerából, és ellenőrzi a geometriával való metszéspontot (fizikailag pontosabb, de lényegesen lassabb).
A rasterizáció során a képpont vagy teljesen a háromszöghöz tartozik, vagy nem — innen erednek a lépcsős élek (aliasing). Az MSAA a képpontonkénti több almintával simítja az éleket, az FXAA pedig szűrőt alkalmaz a kész képre.
Nem, a rasterizáció a grafikus feldolgozási folyamat rögzített szakasza. A fejlesztő nem változtathatja meg az algoritmust, de szabályozhatja a beállításokat: culling, polygon offset, rasterizációs mód (pontok, vonalak, háromszögek) és az MSAA paraméterei.
A Tile-Based Rendering (TBR) tile-okra osztja a képernyőt, és azokat gyors helyi memóriában dolgozza fel, nem pedig a globális VRAM-ban. Ez radikálisan csökkenti az energiafogyasztást és a sávszélességet, ami kritikus az akkumulátorral működő mobileszközöknél.
Összegzés
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is