Растеризација — то је процес претварања векторског описа тродимензионалних примитива (троуглова, линија, тачака) у скуп пиксела (фрагмената) за приказ на екрану. Према подацима Khronos Group, 2025, растеризација је аутоматска (непрограмабилна) фаза графичког конвејера, која се налази између Vertex Shader-а и Fragment Shader-а. Растеризација одређује који пиксели екрана припадају којем троуглу и израчунава интерполисане атрибуте за сваки фрагмент.
Главно
Растеризација — је фаза графичког конвејера која претвара геометријске примитиве (троуглове, линије) у скуп фрагмената за даљу обраду од стране Fragment Shader-а. Улазни подаци — врхови троугла у екранским координатама и њихови атрибути (боја, нормале, UV). Излаз — скуп фрагмената са интерполисаним атрибутима.
За разлику од програмабилних шејдера (Vertex и Fragment Shader), растеризација је фиксна (непрограмабилна) фаза. Програмер не може да промени алгоритам растеризације, али може да управља његовим параметрима: режимом одсецања (culling), ширином линије, померањем дубине (polygon offset) и мултисемплингом.
Практично цела модерна real-time графика — игре, UI, AR/VR — користи растеризацију. Ово је најперформантнији метод рендеровања, способан да обради милионе троуглова по кадру при 60 FPS. GPU растеризатори су оптимизовани за паралелну обраду хиљада троуглова истовремено кроз специјализоване блокове ROP (Render Output Units).
Растеризација троугла почиње након што је Vertex Shader претворио врхове у екранске координате. GPU узима три врха троугла и одређује који пиксели екрана се налазе унутар овог троугла.
Процес укључује три узастопна корака: одређивање bounding box троугла у пикселима — провера сваког пиксела унутар bounding box-а на припадност троуглу (edge function) — израчунавање интерполисаних атрибута (барицентричне координате) за сваки покривени пиксел. Edge function — линеарна једначина која одређује са које стране ивице троугла се налази тачка.
| Фаза | Опис | Резултат |
|---|---|---|
| Clipping | Одсецање троуглова изван граница viewport-а | Видљиви примитиви |
| Viewport transform | Трансформација у екранске координате | Пикселске координате |
| Triangle setup | Израчунавање edge-функција и bounding box-а | Параметри растеризације |
| Fragment generation | Провера покривености и интерполација | Фрагменти + атрибути |
Растеризација може бити реализована различитим алгоритмима, од којих сваки има сопствене компромисе између перформанси и квалитета. Савремени GPU-и користе комбинацију неколико приступа.
Класични алгоритам растеризације, развијен за ране GPU-е. Троугао се обрађује ред по ред (scanline): за сваки ред екрана одређују се тачке уласка и изласка троугла, а сви пиксели између њих се попуњавају. Scanline conversion је ефикасан за велике троуглове, али захтева сложену логику за троуглове произвољног облика.
Савремени GPU-и користе метод half-space растеризације: за сваку страницу троугла израчунава се edge function — линеарна једначина, позитивна са једне стране и негативна са друге. Пиксел припада троуглу ако су све три edge functions позитивне. Half-space растеризација се лако паралелизује и добро одговара SIMD архитектурама GPU-а.
Мобилни GPU-и (Qualcomm Adreno, ARM Mali) користе Tile-Based Rendering (TBR). Екран се дели на мале тајлове (16×16 или 32×32 пиксела), а растеризација се извршава за сваки тајл посебно. Ово минимизира број приступа видео меморији захваљујући чувању кадровског бафера у брзој локалној меморији (tile memory). TBR смањује потрошњу енергије, што је критично за мобилне уређаје.
Растеризација и ray tracing — два принципијелно различита приступа рендеровању 3D графике. Растеризација доминира у real-time апликацијама, ray tracing — у офлајн рендеровању и постепено продире у real-time (на RTX-компатибилним GPU-има).
| Параметар | Растеризација | Ray Tracing |
|---|---|---|
| Принцип | Троугао → фрагменти | Зрак → пресек са сценом |
| Брзина | Веома брз (милиони троуглова/кадар) | Спор (хиљаде зракова/кадар) |
| Квалитет | Захтева додатне технике (сенке, рефлексије) | Физички коректне сенке и рефлексије |
| Мобилни GPU-и | Стандардни метод | Ограничена подршка (A17 Pro, Snapdragon Gen 3) |
| Потрошња енергије | Ниска | Висока |
При растеризацији настаје проблем aliasing-а — назубљене ивице (jaggies) на границама троуглова. Ово се дешава зато што је пиксел дискретан и не може делимично бити покривен троуглом. За борбу против aliasing-а користи се мултисемплинг (MSAA).
MSAA (Multisample Anti-Aliasing) врши растеризацију са повећаном учестаношћу семпловања (2x, 4x, 8x). Уместо једног семпла по пикселу, користи се више под-семплова, од којих се сваки проверава на покривеност троуглом. MSAA 4x обрађује 4 под-семпла по пикселу, што даје приметно заглађивање ивица без потпуног повећања резолуције рендеровања.
За разлику од MSAA, методе пост-процес заглађивања (FXAA, SMAA, TAA) раде након растеризације, анализирајући финалну слику. FXAA (Fast Approximate Anti-Aliasing) одређује ивице слике и примењује замућење за заглађивање, радећи знатно брже од MSAA, али са мање квалитетним резултатом.
Растеризација на савременим GPU-има се извршава специјализованим хардверским блоковима — ROP (Render Output Units). Број ROP-ова директно утиче на брзину попуњавања (fill rate) — број пиксела које GPU може да обради у секунди.
За мобилне GPU-е (Tile-Based Rendering) критично су важни: минимизација overdraw-а кроз рано одбацивање (early-Z), коришћење back-face culling-а за уклањање невидљивих троуглова и скривено уклањање површина (occlusion culling) за одбацивање троуглова потпуно покривеним другим објектима.
Често постављана питања
Растеризација је процес претварања троуглова у пикселе на екрану. GPU узима тродимензионални троугао, одређује које пикселе екрана покрива и прослеђује их Fragment Shader-у за бојење.
Растеризација пројектује троуглове на екран и одређује покривеност пиксела (веома брзо). Ray tracing шаље зраке од камере и проверава пресек са геометријом (физички прецизније, али знатно спорије).
При растеризацији пиксел или у потпуности припада троуглу или не — одатле назубљене ивице (aliasing). MSAA заглађује ивице помоћу вишеструких под-семплова по пикселу, а FXAA примењује филтер на готову слику.
Не, растеризација је фиксна фаза графичког конвејера. Програмер не може да промени алгоритам, али може да управља подешавањима: culling, polygon offset, режим растеризације (тачке, линије, троуглови) и параметри MSAA.
Tile-Based Rendering (TBR) дели екран на тајлове и обрађује их у брзој локалној меморији, а не у глобалној VRAM-и. Ово драстично смањује потрошњу енергије и проток података, што је критично за мобилне уређаје са батеријским напајањем.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође