1 Graphics Rendering PipelineMichał Drobot Technical Art Director Reality Pump
2 Plan wykładu Architektura potoku Etap aplikacjiEtap przekształceń geometrii Etap rasteryzacji
3 Architektura Potoku Architektura potokowaWykonywanie kolejno określonych etapów Całkowity czas wykonania >= najwolniejszemu etapowi „bottleneck” Możliwość równoległego przetwarzania danych wewnątrz potoku Podział etapu na n potoków (etapowych) może dać przyrost wydajności rzędu n Wyciąg narciarski
4 Architektura Potoku Architektura potokowa Application StageGeometry Stage Rasterizer Stage
5 Architektura Potoku Architektura potokowaKażdy etap może być wykonywany równolegle w wielu potokach Architektura skalarna Wielordzeniowość Każdy etap może wykorzystywać specjalizowane zasoby Przydzielony procesor Specjalistyczny hardware Osobna kolejka SPU Etc…
6 Architektura Potoku Przepustowość potokuPotok ma przepustowość swojego najwolniejszego etapu (który również może być potokiem) Prędkość renderowania zależy od przepustowości potoku jak i możliwości odbironika Wyrażamy w FPS – klatki na sekundę ms - czas jaki zajmuje wykonanie potoku w ms Hz - 1/sekundę – czas odświeżenia
7 Architektura Potoku Przepustowość potokuJeśli najwolniejszy etap potoku potrzebuje 20ms, prędkość renderowania wyniesie 1/0.02 = 50Hz Odbiorniki (CRT, LCD, PLASMA etc…) mają zwykle stałe tempo pracy Wpływa to na realną (percepcyjną) prędkość renderowania
8 Architektura Potoku Przepustowość potoku LCD ma odświeżanie 60HzCzas potrzebny na wyrenderowanie klatki wynosi 51ms 1/0.051 = 19.6 fps Możliwości naszego LCD : 60Hz/2 = 30Hz, 60Hz/3 = 20Hz, 60Hz/4 = 15Hz W efekcie obraz będzie wyświetlany z częstotliwością 15Hz 15Hz = max(możliwe tempo odświeżania) < fps
9 Application Stage Obsługiwana przez aplikację wykonywaną w trybie software’owym na CPU ogólnego zastosowania Programowalna Często wykorzystuje możliwości wielordzeniowe Typowe zastosowania Detekcja kolizji Fizyka Animacja Algorytmy przyśpieszające Ostatnim etapem Application Stage jest przesłanie geometrii obiektów, które mają zostać wyrenderowane, do Geometry Stage Najważniejszy etap Application Stage
10 Application Stage Obiekty wysyłane do geometry stage – Rendering Primitives Points Lines Triangles Quads
11 Geometry Stage Etap odpowiedzialny za większość operacji na polygonach i vertexach Podzielony na Transformacje modelu i widoku WorldView transform Cieniowanie vertexów Vertex shading Projekcje Projection transform Clipping Mapowanie ekranowe Screen mapping
12 Geometry Stage Pojedyncze etapy w zależności od implementacji oraz sprzętu mogą działać równolegle oraz mogą być nowymi potokami Tryb software’owy (mobile devices) Tryb mieszany (np. PS3 – SPU + GPU) Tryb specjalizowany (GPU)
13 Model View Transform Każdy obiekt rezyduje we własnej przestrzeni obiektu (Model Space) Każdy model podlega transformacji rotacji, translacji, bądź skalowania Umożliwia użycie różnych przekształceń tej samej geometrii w celu odmiennej reprezentacji w nowej unikatowej przestrzeni Instancing Vertexy oraz normalne obiektu ulegają transformacji Obiekty po przekształceniu znajdują się w nowej unikatowej przestrzeni świata – World Space
14 Model View Transform Jedynie obiekty widziane przez widza / kamerę są renderowane Kamera istnieje w przestrzeni świata Pozycja oraz kierunek patrzenia Dla poprawnej projekcji oraz clippowania obiekty z World Space są transformwoane do View (Camera) Space Kamera w nowej przestrzeni jest ustawiona w centrum w kierunku patrzenia –Z z osia oY skierowaną w dół a osią oX skierowaną w prawo
15 Model View Transform Układ współrzędnych jest zależny od API oraz przyjętych konwencji Transformacje wykonuje się przez przekształcenia macierzy 4x4
16 Vertex Shading Prawidłowa reprezentacja obiektów wymaga obliczeń oświetlenia oraz reprezentacji materiałów Per-Vertex Per-Pixel Vertexy posiadają możliwość przypisania atrybutów Parametry materiału Dodatkowe dane do innych obliczeń
17 Vertex Shading Wyniki obliczeń Reprezentowane przez formę numerycznąInterpolowane Przekazywane dalej Reprezentowane przez formę numeryczną Kolor Wektor Skalar Etc..
18 Projection Transformacja przestrzeni widoku do homogenicznej przestrzeni sześcianu jednostkowego Możliwość użycia różnych kostek Typowo cube o najdalszych punktach (-1,-1,-1) (1,1,1) Projekcja Perspektywiczna Uwzględnia perpsektywę Ortograficzna Linei równoległe pozostają równoległe
19 Projection Po projekcji wartość Z jest przechowywana w Z – buforzePrzekształceń dokonuje się poprzez macierze 4x4 Po projekcji obiekty znajdują się w znormalizowanych koordynatach urządzenia Normalized device coordinates
20 Clipping Jedynie primitywy znajdujące się całkowicie bądź częściowo w przestrzeni przycięcia powinny być przesłane do rasteryzacji Primitywy poza przestrzenią przycięcia są odrzucane Prymitywy leżące na granicy muszą zostać przycięte (clipped) Płaszczyzna przycięcia jest określona przez ściany kostki jednostkowej Użytkownik może dodać dodatkowe płaszczyzny przycięcia
21 Clipping Przycięcie jest realizowane poprzez dodanie nowych vertexów tworzących nową krawędź w miejscu cięcia Clipping jest realizowany zwykle sprzętowo bez udziału programisty
22 Screen mapping Screen MappingPrzycięte prymitywy trafiają do Screen Mappingu Posiadają 3D koordynaty Koordynaty X,Y są transformowane do przestrzeni okna X Y : [-1;1] w Projection Space X Y : [0 ;1] w Screen Space Z : [-1;1] bez zmian (zakres zależy od API) Screen Mapping Translacja + skalowanie +=(0.5,0.5) * (0.5,-0.5) // przykladowo
23 Screen mapping Problem relacji wartości float do int a pixeli i ich koordynatów W zależności od API różne układy współrzędnych i traktowania pojęcia „środek pixela” OGL (0,0) – dolny lewy róg Środek pixela w (0.5,0.5) pixela DX (0,0) – górny lewy róg Środek pixela w (0,0) pixela
24 Rasterizer stage Rasteryzacja ma za zadanie wyliczyć kolor pixeli pokrywających przekazane obiekty (transformowane i sprojektowane vertexy oraz inne dane) Konwersja dwuwymiarowych vertexów w screen space (wraz z ich wartościami Z) do przestrzeni pixeli na ekranie
25 Rasterizer stage Triangle Setup Triangle traversal Pixel shadingMerging
26 Triangle Setup Na tym etapie obliczane są pochodne oraz inne dane dotyczące powierzchni trójkąta Używane do interplowania danych vertexowych Wykonywane przez hardware Fixed-operation
27 Triangle Traversal Każdy pixel bądź próbka (sample) którego środek znajduje się w trójkącie jest sprawdzany i generowany jest dla niego fragment (blok pixeli) Generowane parametry fragmentu z danych interpolowanych między 3 vertexami tworzącymi trójkąt Wykonywane sprzętowo
28 Pixel shading Wszystkie obliczenia per-pixel są tu wykonywane dla każdego pixela W pełni programowalny etap przy użyciu GPU Duża ilość technik umożliwiająca rendering oraz obliczenia ogólnego zastosowania
29 Merging Etap odpowiada zaInformacje dla każdego pixela są przechowywane w buforze koloru (Color Buffer) Odpowiada za łączenie wygenerowanego fragmentu z wartościami koloru przechowywanymi aktualnie w buforze koloru Nie jest programowalne W pełni parametryzowalne Etap odpowiada za Widocznośc (Z-buffer) Alpha Blending Stencil Buffer Double Buffering
30 Merging Z-buffer wielkości Color bufferaPrzechowuje wartość Z każdego pixela Z-test / Depth-test Sprawdza czy wygenerowany fragment jest bliżej ekranu poprzez porównanie jego wartości Z, z aktualnie istniejącą w Z-buforze Jeśli jest bliżej to nadpisuje istniejące wartości Jeśli nie, pozostawia bufory bez zmian Umożliwia prawidłowe renderowanie bez sortowania Renderowanie przeźroczystych obiektów wymaga sortowania back-to-front
31 Merging Alpha blending C = (1-alpha)*OLD_C + alpha*CUmożliwia renderowanie przeźroczystych obiektów Wartość alpha dla każdego pixela, decyduje o stopniu jego transparencji Wartość alpha przechowywana w Alpha Channelu
32 Merging Alpha Test Wykonywany przed depth testemPorównuje wartość alpha z predefiniowaną wartością Może odrzucić cały fragment z potoku Optymalizacja Niezapisywanie przeźroczystych pixeli do Z-bufora
33 Merging Stencil bufferDodatkowy bufor, do którego możemy pisać i czytać Zwykle 8-bitowy Przy użyciu odpowiednich operatorów umożliwia odrzucanie fragmentów obrazu z potoku renderowania Stencil Test
34 Merging Double bufferingObraz po wygenerowaniu jest przechowywany w back bufferze W momencie vertical retrace – odrysowawnia zawartości fizycznego wyświetlacza, back buffer jest zamieniany zawartością z front bufferem i przesyłany do wyświetlacza
35 Podsumowanie For more information contact me [email protected]Slides will be available at Drobot.org
36 Questions ?