Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Graphics Rendering Pipeline Michał Drobot Technical Art Director Reality Pump.

Podobne prezentacje


Prezentacja na temat: "Graphics Rendering Pipeline Michał Drobot Technical Art Director Reality Pump."— Zapis prezentacji:

1 Graphics Rendering Pipeline Michał Drobot Technical Art Director Reality Pump

2 Architektura potokuArchitektura potoku Etap aplikacjiEtap aplikacji Etap przekształceń geometriiEtap przekształceń geometrii Etap rasteryzacjiEtap rasteryzacji Plan wykładu

3 Architektura Potoku Architektura potokowaArchitektura potokowa Wykonywanie kolejno określonych etapówWykonywanie kolejno określonych etapów Całkowity czas wykonania >= najwolniejszemu etapowiCałkowity czas wykonania >= najwolniejszemu etapowi bottleneckbottleneck Możliwość równoległego przetwarzania danych wewnątrz potokuMożliwość równoległego przetwarzania danych wewnątrz potoku Podział etapu na n potoków (etapowych) może dać przyrost wydajności rzędu nPodział etapu na n potoków (etapowych) może dać przyrost wydajności rzędu n Wyciąg narciarskiWyciąg narciarski

4 Architektura Potoku Architektura potokowaArchitektura potokowa Application StageApplication Stage Geometry StageGeometry Stage Rasterizer StageRasterizer Stage

5 Architektura Potoku Architektura potokowaArchitektura potokowa Każdy etap może być wykonywany równolegle w wielu potokachKażdy etap może być wykonywany równolegle w wielu potokach Architektura skalarnaArchitektura skalarna WielordzeniowośćWielordzeniowość Każdy etap może wykorzystywać specjalizowane zasobyKażdy etap może wykorzystywać specjalizowane zasoby Przydzielony procesorPrzydzielony procesor Specjalistyczny hardwareSpecjalistyczny hardware Osobna kolejka SPUOsobna kolejka SPU Etc…Etc…

6 Architektura Potoku Przepustowość potokuPrzepustowość potoku Potok ma przepustowość swojego najwolniejszego etapu (który również może być potokiem)Potok 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 odbironikaPrędkość renderowania zależy od przepustowości potoku jak i możliwości odbironika Wyrażamy wWyrażamy w FPS – klatki na sekundęFPS – klatki na sekundę ms - czas jaki zajmuje wykonanie potoku w msms - czas jaki zajmuje wykonanie potoku w ms Hz - 1/sekundę – czas odświeżeniaHz - 1/sekundę – czas odświeżenia

7 Architektura Potoku Przepustowość potokuPrzepustowość potoku Jeśli najwolniejszy etap potoku potrzebuje 20ms, prędkość renderowania wyniesieJeśli najwolniejszy etap potoku potrzebuje 20ms, prędkość renderowania wyniesie 1/0.02 = 50Hz1/0.02 = 50Hz Odbiorniki (CRT, LCD, PLASMA etc…) mają zwykle stałe tempo pracyOdbiorniki (CRT, LCD, PLASMA etc…) mają zwykle stałe tempo pracy Wpływa to na realną (percepcyjną) prędkość renderowaniaWpływa to na realną (percepcyjną) prędkość renderowania

8 Architektura Potoku Przepustowość potokuPrzepustowość potoku LCD ma odświeżanie 60HzLCD ma odświeżanie 60Hz Czas potrzebny na wyrenderowanie klatki wynosi 51msCzas potrzebny na wyrenderowanie klatki wynosi 51ms 1/0.051 = 19.6 fps1/0.051 = 19.6 fps Możliwości naszego LCD : 60Hz/2 = 30Hz, 60Hz/3 = 20Hz, 60Hz/4 = 15HzMożliwości naszego LCD : 60Hz/2 = 30Hz, 60Hz/3 = 20Hz, 60Hz/4 = 15Hz W efekcie obraz będzie wyświetlany z częstotliwością 15HzW efekcie obraz będzie wyświetlany z częstotliwością 15Hz 15Hz = max(możliwe tempo odświeżania) < fps15Hz = max(możliwe tempo odświeżania) < fps

9 Application Stage Obsługiwana przez aplikację wykonywaną w trybie softwareowym na CPU ogólnego zastosowaniaObsługiwana przez aplikację wykonywaną w trybie softwareowym na CPU ogólnego zastosowania ProgramowalnaProgramowalna Często wykorzystuje możliwości wielordzenioweCzęsto wykorzystuje możliwości wielordzeniowe Typowe zastosowaniaTypowe zastosowania Detekcja kolizjiDetekcja kolizji FizykaFizyka AnimacjaAnimacja Algorytmy przyśpieszająceAlgorytmy przyśpieszające Ostatnim etapem Application Stage jest przesłanie geometrii obiektów, które mają zostać wyrenderowane, do Geometry StageOstatnim etapem Application Stage jest przesłanie geometrii obiektów, które mają zostać wyrenderowane, do Geometry Stage Najważniejszy etap Application StageNajważniejszy etap Application Stage

10 Application Stage Obiekty wysyłane do geometry stage – Rendering PrimitivesObiekty wysyłane do geometry stage – Rendering Primitives PointsPoints LinesLines TrianglesTriangles QuadsQuads

11 Geometry Stage Etap odpowiedzialny za większość operacji na polygonach i vertexachEtap odpowiedzialny za większość operacji na polygonach i vertexach Podzielony naPodzielony na Transformacje modelu i widokuTransformacje modelu i widoku WorldView transformWorldView transform Cieniowanie vertexówCieniowanie vertexów Vertex shadingVertex shading ProjekcjeProjekcje Projection transformProjection transform ClippingClipping Mapowanie ekranoweMapowanie ekranowe Screen mappingScreen mapping

12 Geometry Stage Pojedyncze etapy w zależności od implementacji oraz sprzętu mogą działać równolegle oraz mogą być nowymi potokamiPojedyncze etapy w zależności od implementacji oraz sprzętu mogą działać równolegle oraz mogą być nowymi potokami Tryb softwareowy (mobile devices)Tryb softwareowy (mobile devices) Tryb mieszany (np. PS3 – SPU + GPU)Tryb mieszany (np. PS3 – SPU + GPU) Tryb specjalizowany (GPU)Tryb specjalizowany (GPU)

13 Model View Transform Każdy obiekt rezyduje we własnej przestrzeni obiektu (Model Space)Każdy obiekt rezyduje we własnej przestrzeni obiektu (Model Space) Każdy model podlega transformacji rotacji, translacji, bądź skalowaniaKaż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 przestrzeniUmożliwia użycie różnych przekształceń tej samej geometrii w celu odmiennej reprezentacji w nowej unikatowej przestrzeni InstancingInstancing Vertexy oraz normalne obiektu ulegają transformacjiVertexy oraz normalne obiektu ulegają transformacji Obiekty po przekształceniu znajdują się w nowej unikatowej przestrzeni świata – World SpaceObiekty po przekształceniu znajdują się w nowej unikatowej przestrzeni świata – World Space

14 Model View Transform Jedynie obiekty widziane przez widza / kamerę są renderowaneJedynie obiekty widziane przez widza / kamerę są renderowane Kamera istnieje w przestrzeni świataKamera istnieje w przestrzeni świata Pozycja oraz kierunek patrzeniaPozycja oraz kierunek patrzenia Dla poprawnej projekcji oraz clippowania obiekty z World Space są transformwoane do View (Camera) SpaceDla 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 prawoKamera 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 konwencjiUkład współrzędnych jest zależny od API oraz przyjętych konwencji Transformacje wykonuje się przez przekształcenia macierzy 4x4Transformacje wykonuje się przez przekształcenia macierzy 4x4

16 Vertex Shading Prawidłowa reprezentacja obiektów wymaga obliczeń oświetlenia oraz reprezentacji materiałówPrawidłowa reprezentacja obiektów wymaga obliczeń oświetlenia oraz reprezentacji materiałów Per-VertexPer-Vertex Per-PixelPer-Pixel Vertexy posiadają możliwość przypisania atrybutówVertexy posiadają możliwość przypisania atrybutów Parametry materiałuParametry materiału Dodatkowe dane do innych obliczeńDodatkowe dane do innych obliczeń

17 Vertex Shading Wyniki obliczeńWyniki obliczeń InterpolowaneInterpolowane Przekazywane dalejPrzekazywane dalej Reprezentowane przez formę numerycznąReprezentowane przez formę numeryczną KolorKolor WektorWektor SkalarSkalar Etc..Etc..

18 Projection Transformacja przestrzeni widoku do homogenicznej przestrzeni sześcianu jednostkowegoTransformacja przestrzeni widoku do homogenicznej przestrzeni sześcianu jednostkowego Możliwość użycia różnych kostekMożliwość użycia różnych kostek Typowo cube o najdalszych punktach (-1,-1,-1) (1,1,1)Typowo cube o najdalszych punktach (-1,-1,-1) (1,1,1) ProjekcjaProjekcja PerspektywicznaPerspektywiczna Uwzględnia perpsektywęUwzględnia perpsektywę OrtograficznaOrtograficzna Linei równoległe pozostają równoległeLinei równoległe pozostają równoległe

19 Projection Po projekcji wartość Z jest przechowywana w Z – buforzePo projekcji wartość Z jest przechowywana w Z – buforze Przekształceń dokonuje się poprzez macierze 4x4Przekształceń dokonuje się poprzez macierze 4x4 Po projekcji obiekty znajdują się w znormalizowanych koordynatach urządzeniaPo projekcji obiekty znajdują się w znormalizowanych koordynatach urządzenia Normalized device coordinatesNormalized device coordinates

20 Clipping Jedynie primitywy znajdujące się całkowicie bądź częściowo w przestrzeni przycięcia powinny być przesłane do rasteryzacjiJedynie 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ą odrzucanePrimitywy poza przestrzenią przycięcia są odrzucane Prymitywy leżące na granicy muszą zostać przycięte (clipped)Prymitywy leżące na granicy muszą zostać przycięte (clipped) Płaszczyzna przycięcia jest określona przez ściany kostki jednostkowejPłaszczyzna przycięcia jest określona przez ściany kostki jednostkowej Użytkownik może dodać dodatkowe płaszczyzny przycięciaUż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ęciaPrzycię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 programistyClipping jest realizowany zwykle sprzętowo bez udziału programisty

22 Screen mapping Przycięte prymitywy trafiają do Screen MappinguPrzycięte prymitywy trafiają do Screen Mappingu Posiadają 3D koordynatyPosiadają 3D koordynaty Koordynaty X,Y są transformowane do przestrzeni oknaKoordynaty X,Y są transformowane do przestrzeni okna X Y : [-1;1] w Projection SpaceX Y : [-1;1] w Projection Space X Y : [0 ;1] w Screen SpaceX Y : [0 ;1] w Screen Space Z : [-1;1] bez zmian (zakres zależy od API)Z : [-1;1] bez zmian (zakres zależy od API) Screen MappingScreen Mapping Translacja + skalowanieTranslacja + skalowanie +=(0.5,0.5) * (0.5,-0.5) // przykladowo+=(0.5,0.5) * (0.5,-0.5) // przykladowo

23 Screen mapping Problem relacji wartości float do int a pixeli i ich koordynatówProblem 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 pixelaW zależności od API różne układy współrzędnych i traktowania pojęcia środek pixela OGLOGL (0,0) – dolny lewy róg(0,0) – dolny lewy róg Środek pixela w (0.5,0.5) pixelaŚrodek pixela w (0.5,0.5) pixela DXDX (0,0) – górny lewy róg(0,0) – górny lewy róg Środek pixela w (0,0) pixelaŚ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)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 ekranieKonwersja dwuwymiarowych vertexów w screen space (wraz z ich wartościami Z) do przestrzeni pixeli na ekranie

25 Rasterizer stage Triangle SetupTriangle Setup Triangle traversalTriangle traversal Pixel shadingPixel shading MergingMerging

26 Triangle Setup Na tym etapie obliczane są pochodne oraz inne dane dotyczące powierzchni trójkątaNa tym etapie obliczane są pochodne oraz inne dane dotyczące powierzchni trójkąta Używane do interplowania danych vertexowychUżywane do interplowania danych vertexowych Wykonywane przez hardwareWykonywane przez hardware Fixed-operationFixed-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)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ątGenerowane parametry fragmentu z danych interpolowanych między 3 vertexami tworzącymi trójkąt Wykonywane sprzętowoWykonywane sprzętowo

28 Pixel shading Wszystkie obliczenia per-pixel są tu wykonywane dla każdego pixelaWszystkie obliczenia per-pixel są tu wykonywane dla każdego pixela W pełni programowalny etap przy użyciu GPUW pełni programowalny etap przy użyciu GPU Duża ilość technik umożliwiająca rendering oraz obliczenia ogólnego zastosowaniaDuża ilość technik umożliwiająca rendering oraz obliczenia ogólnego zastosowania

29 Merging Informacje dla każdego pixela są przechowywane w buforze koloru (Color Buffer)Informacje dla każdego pixela są przechowywane w buforze koloru (Color Buffer) Odpowiada za łączenie wygenerowanego fragmentu z wartościami koloru przechowywanymi aktualnie w buforze koloruOdpowiada za łączenie wygenerowanego fragmentu z wartościami koloru przechowywanymi aktualnie w buforze koloru Nie jest programowalneNie jest programowalne W pełni parametryzowalneW pełni parametryzowalne Etap odpowiada zaEtap odpowiada za Widocznośc (Z-buffer)Widocznośc (Z-buffer) Alpha BlendingAlpha Blending Stencil BufferStencil Buffer Double BufferingDouble Buffering

30 Merging Z-buffer wielkości Color bufferaZ-buffer wielkości Color buffera Przechowuje wartość Z każdego pixelaPrzechowuje wartość Z każdego pixela Z-test / Depth-testZ-test / Depth-test Sprawdza czy wygenerowany fragment jest bliżej ekranu poprzez porównanie jego wartości Z, z aktualnie istniejącą w Z-buforzeSprawdza 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ściJeśli jest bliżej to nadpisuje istniejące wartości Jeśli nie, pozostawia bufory bez zmianJeśli nie, pozostawia bufory bez zmian Umożliwia prawidłowe renderowanie bez sortowaniaUmożliwia prawidłowe renderowanie bez sortowania Renderowanie przeźroczystych obiektów wymaga sortowania back-to-frontRenderowanie przeźroczystych obiektów wymaga sortowania back-to-front

31 Merging Alpha blendingAlpha blending C = (1-alpha)*OLD_C + alpha*CC = (1-alpha)*OLD_C + alpha*C Umożliwia renderowanie przeźroczystych obiektówUmożliwia renderowanie przeźroczystych obiektów Wartość alpha dla każdego pixela, decyduje o stopniu jego transparencjiWartość alpha dla każdego pixela, decyduje o stopniu jego transparencji Wartość alpha przechowywana w Alpha ChanneluWartość alpha przechowywana w Alpha Channelu

32 Merging Alpha TestAlpha Test Wykonywany przed depth testemWykonywany przed depth testem Porównuje wartość alpha z predefiniowaną wartościąPorównuje wartość alpha z predefiniowaną wartością Może odrzucić cały fragment z potokuMoże odrzucić cały fragment z potoku OptymalizacjaOptymalizacja Niezapisywanie przeźroczystych pixeli do Z-buforaNiezapisywanie przeźroczystych pixeli do Z-bufora

33 Merging Stencil bufferStencil buffer Dodatkowy bufor, do którego możemy pisać i czytaćDodatkowy bufor, do którego możemy pisać i czytać Zwykle 8-bitowyZwykle 8-bitowy Przy użyciu odpowiednich operatorów umożliwia odrzucanie fragmentów obrazu z potoku renderowaniaPrzy użyciu odpowiednich operatorów umożliwia odrzucanie fragmentów obrazu z potoku renderowania Stencil TestStencil Test

34 Merging Double bufferingDouble buffering Obraz po wygenerowaniu jest przechowywany w back bufferzeObraz 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świetlaczaW 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 Slides will be available at Drobot.org

36 Questions ?


Pobierz ppt "Graphics Rendering Pipeline Michał Drobot Technical Art Director Reality Pump."

Podobne prezentacje


Reklamy Google