Rasteryzacja — co to jest, etapy i zasada działania

Autor: IT Sectr Opublikowano: 2026-06-11 Czas czytania: 10 min

Rasteryzacja — to proces przekształcania wektorowego opisu trójwymiarowych prymitywów (trójkątów, linii, punktów) w zestaw pikseli (fragmentów) do wyświetlenia na ekranie. Według Khronos Group, 2025, rasteryzacja jest automatycznym (nieprogramowalnym) etapem potoku graficznego, znajdującym się między Vertex Shader a Fragment Shader. Rasteryzacja określa, które piksele ekranu należą do którego trójkąta i oblicza interpolowane atrybuty dla każdego fragmentu.

Najważniejsze

  • Rasteryzacja — przekształcanie prymitywów wektorowych w obraz rastrowy (piksele).
  • Scanline conversion — podstawowy algorytm określający pokrycie pikseli przez trójkąt.
  • Interpolacja atrybutów — obliczanie koloru, współrzędnych tekstur i normalnych dla każdego fragmentu.
  • MSAA — multisampling wygładzający postrzępione krawędzie (aliasing) podczas rasteryzacji.
  • Wydajność rasteryzacji zależy od liczby trójkątów i rozdzielczości ekranu.

Czym jest rasteryzacja?

Rasteryzacja — to etap potoku graficznego, który przekształca prymitywy geometryczne (trójkąty, linie) w zestaw fragmentów do dalszego przetwarzania przez Fragment Shader. Dane wejściowe — wierzchołki trójkąta w współrzędnych ekranowych i ich atrybuty (kolor, normalne, UV). Wyjście — zestaw fragmentów z interpolowanymi atrybutami.

W przeciwieństwie do programowalnych shaderów (Vertex i Fragment Shader), rasteryzacja jest stałym (nieprogramowalnym) etapem. Deweloper nie może zmienić algorytmu rasteryzacji, ale może zarządzać jej parametrami: trybem odcinania (culling), szerokością linii, przesunięciem głębi (polygon offset) i multisamplingiem.

Rola rasteryzacji w grafice czasu rzeczywistego

Praktycznie cała współczesna grafika czasu rzeczywistego — gry, UI, AR/VR — używa rasteryzacji. To najbardziej wydajna metoda renderowania, zdolna do przetwarzania milionów trójkątów na klatkę przy 60 FPS. Rasteryzatory GPU są zoptymalizowane do równoległego przetwarzania tysięcy trójkątów jednocześnie przez wyspecjalizowane bloki ROP (Render Output Units).

Jak działa rasteryzacja?

Rasteryzacja trójkąta rozpoczyna się po tym, jak Vertex Shader przekształcił wierzchołki w współrzędne ekranowe. GPU bierze trzy wierzchołki trójkąta i określa, które piksele ekranu znajdują się wewnątrz tego trójkąta.

Etapy rasteryzacji trójkąta

Proces obejmuje trzy kolejne kroki: określenie bounding box trójkąta w pikselach — sprawdzenie każdego piksela wewnątrz bounding box pod kątem przynależności do trójkąta (edge function) — obliczenie interpolowanych atrybutów (współrzędne barycentryczne) dla każdego pokrytego piksela. Edge function — to równanie liniowe określające, po której stronie krawędzi trójkąta znajduje się punkt.

EtapOpisWynik
ClippingPrzycinanie trójkątów poza granicami viewportWidoczne prymitywy
Viewport transformPrzekształcenie do współrzędnych ekranowychWspółrzędne pikselowe
Triangle setupObliczenie edge-funkcji i bounding boxParametry rasteryzacji
Fragment generationSprawdzenie pokrycia i interpolacjaFragmenty + atrybuty

Algorytmy rasteryzacji

Rasteryzacja może być realizowana różnymi algorytmami, z których każdy ma swoje kompromisy między wydajnością a jakością. Nowoczesne GPU używają kombinacji kilku podejść.

Algorytm Scanline

Klasyczny algorytm rasteryzacji, opracowany dla wczesnych GPU. Trójkąt jest przetwarzany wiersz po wierszu (scanline): dla każdego wiersza ekranu określane są punkty wejścia i wyjścia trójkąta, a wszystkie piksele między nimi są wypełniane. Scanline conversion jest wydajny dla dużych trójkątów, ale wymaga złożonej logiki dla trójkątów o dowolnym kształcie.

Metoda Half-space (edge function)

Nowoczesne GPU używają metody rasteryzacji half-space: dla każdej strony trójkąta obliczana jest edge function — równanie liniowe, dodatnie z jednej strony i ujemne z drugiej. Piksel należy do trójkąta, jeśli wszystkie trzy edge functions są dodatnie. Rasteryzacja half-space łatwo się parallelizuje i dobrze pasuje do architektur SIMD GPU.

Rasteryzacja Tile-Based (TBR)

Mobilne GPU (Qualcomm Adreno, ARM Mali) używają Tile-Based Rendering (TBR). Ekran jest dzielony na małe tile (16x16 lub 32x32 piksele), a rasteryzacja jest wykonywana dla każdego tila osobno. Minimalizuje to liczbę odwołań do pamięci wideo dzięki przechowywaniu bufora klatek w szybkiej pamięci lokalnej (tile memory). TBR zmniejsza zużycie energii, co jest krytyczne dla urządzeń mobilnych.

Rasteryzacja vs Ray Tracing

Rasteryzacja i ray tracing — dwa zasadniczo różne podejścia do renderowania grafiki 3D. Rasteryzacja dominuje w aplikacjach czasu rzeczywistego, ray tracing — w renderowaniu offline i stopniowo przenika do czasu rzeczywistego (na GPU kompatybilnych z RTX).

ParametrRasteryzacjaRay Tracing
ZasadaTrójkąt → fragmentyPromień → przecięcie ze sceną
SzybkośćBardzo szybki (miliony trójkątów/klatka)Wolny (tysiące promieni/klatka)
JakośćWymaga dodatkowych technik (cienie, odbicia)Fizycznie poprawne cienie i odbicia
Mobilne GPUStandardowa metodaOgraniczone wsparcie (A17 Pro, Snapdragon Gen 3)
Zużycie energiiNiskieWysokie

MSAA i wygładzanie przy rasteryzacji

Przy rasteryzacji występuje problem aliasingu — postrzępione krawędzie (jaggies) na granicach trójkątów. Dzieje się tak, ponieważ piksel jest dyskretny i nie może być częściowo pokryty przez trójkąt. Do walki z aliasingiem stosuje się multisampling (MSAA).

Jak działa MSAA

MSAA (Multisample Anti-Aliasing) wykonuje rasteryzację ze zwiększoną częstotliwością próbkowania (2x, 4x, 8x). Zamiast jednej próbki na piksel używanych jest wiele sub-próbek, z których każda jest sprawdzana pod kątem pokrycia przez trójkąt. MSAA 4x przetwarza 4 sub-próbki na piksel, co daje zauważalne wygładzenie krawędzi bez pełnego zwiększania rozdzielczości renderowania.

FXAA i inne metody post-process

W przeciwieństwie do MSAA, metody wygładzania post-process (FXAA, SMAA, TAA) działają już po rasteryzacji, analizując końcowy obraz. FXAA (Fast Approximate Anti-Aliasing) określa krawędzie obrazu i stosuje rozmycie w celu wygładzenia, działając znacznie szybciej niż MSAA, ale z mniej jakościowym wynikiem.

Rasteryzacja na GPU i optymalizacja

Rasteryzacja na nowoczesnych GPU jest wykonywana przez wyspecjalizowane bloki sprzętowe — ROP (Render Output Units). Liczba ROP bezpośrednio wpływa na szybkość wypełniania (fill rate) — liczbę pikseli, którą GPU może przetworzyć na sekundę.

Czynniki wydajności rasteryzacji

  • Triangle count — liczba trójkątów na klatkę. Każdy trójkąt wymaga narzutu na setup i testowanie krawędzi.
  • Fill rate — liczba pikseli przetwarzanych przez bloki ROP na sekundę. Zależy od częstotliwości taktowania GPU i liczby ROP.
  • Overdraw — ponowna rasteryzacja jednego piksela z powodu nakładania się trójkątów. Optymalizowane przez sortowanie obiektów według głębokości.

Optymalizacja rasteryzacji dla mobilnych GPU

Dla mobilnych GPU (Tile-Based Rendering) krytycznie ważne są: minimalizacja overdraw przez wczesne odrzucanie (early-Z), używanie back-face culling do usuwania niewidocznych trójkątów oraz ukryte usuwanie powierzchni (occlusion culling) do odrzucania trójkątów całkowicie zasłoniętych przez inne obiekty.

Często zadawane pytania

Czym jest rasteryzacja w prostych słowach?

Rasteryzacja to proces zamiany trójkątów na piksele na ekranie. GPU bierze trójwymiarowy trójkąt, określa, które piksele ekranu on zakrywa i przekazuje je do Fragment Shader w celu pokolorowania.

Czym rasteryzacja różni się od ray tracingu?

Rasteryzacja rzutuje trójkąty na ekran i określa pokrycie pikseli (bardzo szybko). Ray tracing wysyła promienie z kamery i sprawdza przecięcie z geometrią (fizycznie dokładniej, ale znacznie wolniej).

Po co potrzebne jest wygładzanie (anti-aliasing) przy rasteryzacji?

Przy rasteryzacji piksel albo całkowicie należy do trójkąta, albo nie — stąd postrzępione krawędzie (aliasing). MSAA wygładza krawędzie dzięki wielokrotnym sub-próbkom na piksel, a FXAA stosuje filtr do gotowego obrazu.

Czy można programować etap rasteryzacji?

Nie, rasteryzacja to stały etap potoku graficznego. Deweloper nie może zmienić algorytmu, ale może zarządzać ustawieniami: culling, polygon offset, tryb rasteryzacji (punkty, linie, trójkąty) i parametry MSAA.

Dlaczego mobilne GPU używają Tile-Based Rendering?

Tile-Based Rendering (TBR) dzieli ekran na tile i przetwarza je w szybkiej pamięci lokalnej, a nie w globalnej VRAM. To radykalnie zmniejsza zużycie energii i przepustowość, co jest krytyczne dla urządzeń mobilnych zasilanych bateryjnie.

Podsumowanie

  • Rasteryzacja — przekształcanie wektorowych trójkątów w fragmenty rastrowe do wyświetlenia na ekranie.
  • Half-space — główny algorytm rasteryzacji w nowoczesnych GPU.
  • Tile-Based Rendering — architektura rasteryzacji używana w mobilnych GPU (Adreno, Mali).
  • Aliasing — problem postrzępionych krawędzi, rozwiązywany przez MSAA, FXAA lub TAA.
  • Fill rate — kluczowy parametr wydajności rasteryzacji, zależny od liczby bloków ROP.
  • Overdraw — ponowna rasteryzacja pikseli, optymalizowana przez early-Z i occlusion culling.
  • Ray Tracing — alternatywna metoda zapewniająca fizycznie poprawny rendering kosztem wydajności.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również