Graphics Rendering Pipeline

Slides:



Advertisements
Podobne prezentacje
Monitory i systemy graficzne
Advertisements

Język C/C++ Funkcje.
Modele oświetlenia Punktowe źródła światła Inne
Krzysztof Skabek, Przemysław Kowalski
Podstawy grafiki komputerowej
Zadanie z dekompozycji
SCR 2008/2009 – informatyka rok 5. Agenda Wizualizacja agentów (MarketSpace)
Skalowalny algorytm estymacji ruchu dla systemów rozproszonych
Implementacja algorytmów na procesory kart graficznych
Przekształcenia afiniczne
Pracownia Gier w OpenGL
Grafika komputerowa Wykład 2 Wykorzystanie podstawowych usług bibliotecznych (API) w operacjach graficznych.
Grafika komputerowa Wykład 8 Wstęp do wizualizacji 3D
Interaktywny edytor terenu
Interaktywny edytor terenu
Rozpoznawanie Twarzy i Systemy Biometryczne, 2005/2006
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Opis, budowa, zasada działania, funkcje, technologie
Rzutowanie 3D  2D Rzutowanie planarne Rzut równoległe
Eliminacja powierzchni niewidocznych Wyznaczanie powierzchni widocznych Które powierzchnie, krawędzie i punkty są widoczne ze środka rzutowania (albo wzdłuż.
Geometria obrazu Wykład 9
Geometria obrazu Wykład 13
wykonał Jarosław Orski promotor pracy: mgr Szymon Smaga
Przegląd ważniejszych bibliotek używanych przy projekcie Quall.
Zastosowanie technologii CUDA w sztucznej inteligencji
ZESTAW KOMPUTEROWY.
Współrzędne jednorodne
Współrzędne jednorodne
Zbiór do posortowania mieści się w pamięci
Instytut Tele- i Radiotechniczny WARSZAWA
Komputerowe metody przetwarzania obrazów cyfrowych
Grafika komputerowa Wykład 11 Analiza widoczności
Tryb graficzny i tryb tekstowy - już tylko w terminalach
Karty graficzne Karta graficzna, często określana też mianem akcelerator grafiki, to element komputera tworzący sygnał dla monitora. Podstawowym zadaniem.
Programowanie gier komputerowych Tomasz Martyn
Autor: Justyna Radomska
1.Z ogólnego, niezależnego od implementacji punktu widzenia, dane stanowiące opis geometrii modelu zorganizowane są w skończoną sekwencję (lub grupę sekwencji)
Advanced Soft Shadows Michał Drobot Technical Art Director Reality Pump.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Light pre-pass renderer
Zaawansowane techniki renderingu
Budowa i rodzaje procesorów.
Mikroprocesory.
Podsystem graficzny i audio
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Wojciech Toman. Dotychczasowe podejście do oświetlenia Idea deferred shadingu Typowe problemy wraz z propozycjami rozwiązania Optymalizacja wydajności.
Etapy uruchamiania systemu Pliki konfiguracyjne
3dMatchGL Wykorzystanie biblioteki graficznej OpenGL przy tworzeniu gry 3DMatchGL.
Algorytm Z-Bufora (bufora głębokości)
Aplikacje internetowe
Aplikacje internetowe
Procesor – charakterystyka elementów systemu. Parametry procesora.
Projektowanie Inżynierskie
Grafika i komunikacja człowieka z komputerem
Grafika i komunikacja człowieka z komputerem
Procesor, pamięć, przerwania, WE/WY, …
Grafika i komunikacja człowieka z komputerem
WSPM - Wirtualny System Plików Multimedialnych Igor BOKUN, Stanisław STRELNIK, Krzysztof ZIELIŃSKI Katedra Informatyki Akademia Górniczo-Hutnicza.
Podsumowanie omówionych zagadnień
Podstawy automatyki I Wykład 1b /2016
Draver/GRK/cw3_result.jpg. Grafika 3D Wprowadzenie.
Grafika 2d - Podstawy. Kontakt Daniel Sadowski FTP: draver/GRK - wyklady.
mysz drukarka Jednostka centralna monitor klawiatura.
Akademia ETI 2016 LABORATORIUM 2 – OBSŁUGA WYŚWIETLACZA GRAFICZNEGO.
Wzorzec MVC na przykładzie CakePHP
Rzutowania Rzutowanie jest przekształceniem przestrzeni trójwymiarowej na przestrzeń dwuwymiarową. Rzutowanie polega na poprowadzeniu prostej przez dany.
Tensor naprężeń Cauchyego
Tensor naprężeń Cauchyego
Format rozkazu Tryby adresowania.
Zapis prezentacji:

Graphics Rendering Pipeline Michał Drobot Technical Art Director Reality Pump

Plan wykładu Architektura potoku Etap aplikacji Etap przekształceń geometrii Etap rasteryzacji

Architektura Potoku Architektura potokowa Wykonywanie 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

Architektura Potoku Architektura potokowa Application Stage Geometry Stage Rasterizer Stage

Architektura Potoku Architektura potokowa Każ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…

Architektura Potoku Przepustowość potoku 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 odbironika Wyrażamy w FPS – klatki na sekundę ms - czas jaki zajmuje wykonanie potoku w ms Hz - 1/sekundę – czas odświeżenia

Architektura Potoku Przepustowość potoku Jeś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

Architektura Potoku Przepustowość potoku LCD ma odświeżanie 60Hz Czas 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

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

Application Stage Obiekty wysyłane do geometry stage – Rendering Primitives Points Lines Triangles Quads

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

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)

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

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

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

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ń

Vertex Shading Wyniki obliczeń Reprezentowane przez formę numeryczną Interpolowane Przekazywane dalej Reprezentowane przez formę numeryczną Kolor Wektor Skalar Etc..

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

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

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

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

Screen mapping Screen Mapping Przycię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

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

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

Rasterizer stage Triangle Setup Triangle traversal Pixel shading Merging

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

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

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

Merging Etap odpowiada za 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 koloru Nie jest programowalne W pełni parametryzowalne Etap odpowiada za Widocznośc (Z-buffer) Alpha Blending Stencil Buffer Double Buffering

Merging Z-buffer wielkości Color buffera Przechowuje 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

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

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

Merging Stencil buffer Dodatkowy 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

Merging Double buffering Obraz 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

Podsumowanie For more information contact me hello@drobot.org Slides will be available at Drobot.org

Questions ?