RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Podobne dokumenty
Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Animowana grafika 3D. Opracowanie: J. Kęsik.

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Plan wykładu. Akcelerator 3D Potok graficzny

Filtrowanie tekstur. Kinga Laurowska

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Oświetlenie obiektów 3D

PRZEWODNIK PO PRZEDMIOCIE

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karty graficzne możemy podzielić na:

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

GRK 4. dr Wojciech Palubicki

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

Julia 4D - raytracing

Efekty dodatkowe w rasteryzacji

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Transformacje. dr Radosław Matusik. radmat

3 Przygotował: mgr inż. Maciej Lasota

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Technologie Informacyjne

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

Architektura Komputerów

Animowana grafika 3D. Opracowanie: J. Kęsik.

Synteza i obróbka obrazu HDR. Obrazy o rozszerzonym zakresie dynamiki

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

Gry komputerowe: efekty specjalne cz. 2

Zaawansowana Grafika Komputerowa

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Grafika komputerowa. Dla DSI II

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

Przykładowe pytania na teście teoretycznym

Pracownia Komputerowa wykład VI

Techniki animacji komputerowej

Problematyka budowy skanera 3D doświadczenia własne

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Zatem standardowe rysowanie prymitywów wygląda następująco:

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Materiały. Dorota Smorawa

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. Grafika Komputerowa, Informatyka, I Rok

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Gry komputerowe, Informatyka N1, III Rok

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

HDR. Obrazy o rozszerzonym zakresie dynamiki

1. Czym jest rendering? a. Komputerowa analiza modelu danej sceny i utworzenie na jej podstawie obrazu 2D. b. Funkcja umożliwiająca kopiowanie obrazu

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Architektura Procesorów Graficznych

WSTĘP DO GRAFIKI KOMPUTEROWEJ

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

OpenGL Światło (cieniowanie)

Różne rodzaje efektów

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

Grafika komputerowa i wizualizacja

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

Podstawy Informatyki

DesignCAD 3D Max 24.0 PL

Bartosz Bazyluk OpenGL Deferred shading. Pętla główna i jej implementacje. Debugowanie i analiza wydajności.

Wykład 5. Rendering (2) Geometria

Rendering sceny z modelem węzła

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Matematyka z plusem Klasa IV

PORÓWNANIE WYDAJNOŚCI JĘZYKÓW CIENIOWANIA CG I HLSL

OpenGL Światło (cieniowanie)

a. Czym różni się sposób liczenia odbicia zwierciadlanego zaproponowany przez Phonga od zaproponowanego przez Blinna?

Programowanie w Baltie klasa VII

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

SYMULACJA OPADÓW ATMOSFERYCZNYCH I POKRYWY ŚNIEŻNEJ W GENERATORZE OBRAZU JASKIER IG

6 Przygotował: mgr inż. Maciej Lasota

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Algorytmy renderingu dla programowalnych jednostek graficznych. prof. dr hab. inż. Maria Pietruszka mgr inż. Dominik Szajerman

Grafika 3D program POV-Ray - 1 -

Pracownia Komputerowa wyk ad VI

Światła i rodzaje świateł. Dorota Smorawa

GIMP. Ćwiczenie nr 6 efekty i filtry. Instrukcja. dla Gimnazjum 36 - Ryszard Rogacz Strona 18

Synteza i obróbka obrazu. Algorytmy oświetlenia globalnego

Podstawy grafiki komputerowej

rgbf<składowa_r,składowa_g,składowa_b,filter>. Dla parametru filter przyjmij kolejno wartości: 0.60, 0.70, 0.80, 0.90, 1.00, np.:

OpenGL i wprowadzenie do programowania gier

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Wykład 4. Rendering (1) Informacje podstawowe

Transkrypt:

RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski

Plan wykładu Opóźnione cieniowanie wprowadzenie Koszt obliczeniowy cieniowania Cieniowanie jedno- i wieloprzebiegowe Cieniowanie opóźnione Schemat opóźnionego cieniowania Rendering, bufory G (Geometric Buffers) Przechowywane dane, odtwarzanie pozycji Obliczanie oświetlenia

Plan wykładu c.d. Przeźroczystość Obliczana po przebiegu cieniowania opóźnionego Technika depth peeling w cieniowaniu opóźnionym Listy fragmentów na piksel Antyaliasing Algorytm podstawowy zwielokrotnienie tekseli Antyaliasing oparty o wykrywanie krawędzi Technika Light Pre-Pass

Literatura O. Shishkovtsov, Deferred shading in S.T.A.L.K.E.R., GPU Gems 2, 2005 R. Koonce, Deferred Shading in Tabula Rasa, GPU Gems 3, 2007 M. Valient, Deferred Rendering in Killzone 2, Develop Conference, 2007 W. Engel, The Light Pre-Pass Renderer, ShaderX7, 2008

Literatura c.d. A. Reshetov, Morphological Antialiasing, High Performace Graphics 2009 V. Biri i inni, Practical morphological antialiasing on the GPU, SIGGRAPH 2010

Opóźnione cieniowanie wprowadzenie Sceny ze współczesnych gier komputerowych zawierają wiele obiektów oraz są oświetlone dużą ilością świateł Powoduje to problemy z wydajnym obliczaniem oświetlenia Podobne trudności powstają przy stosowaniu map cieni do wielu świateł jednocześnie

Opóźnione cieniowanie wprowadzenie W grafice czasu rzeczywistego obecnie stosowane są trzy podejścia Rendering jednoprzebiegowy z wieloma źródłami światła Rendering wieloprzebiegowy ze z góry ograniczoną ilością świateł na przebieg Cieniowanie opóźnione oświetlenie obliczane w postprocesie

Opóźnione cieniowanie wprowadzenie Cieniowanie opóźnione znacznie obniża koszt obliczania oświetlenia Niestety wprowadza też pewne niedogodności Obiekty półprzeźroczyste cieniowanie zwykłe albo np. rendering z listami fragmentów na piksel Antyaliasing wymaga bardzo dużo pamięci Własności materiału (matowy, połyskliwy, itp.) zawarte w programie liczącym oświetlenie scena nie może zawierać zbyt wielu różnych materiałów

Koszt obliczeniowy cieniowania Rendering jednoprzebiegowy Wielokrotne cieniowanie tych samych pikseli (tzw. overdraw ) Konieczność zapamiętania wszystkich map cienia jednocześnie brak pamięci VRAM Rendering wieloprzebiegowy Nie ma problemu z mapami cienia Jeszcze większy koszt obliczeniowy wielokrotne wykonanie programów wierzchołków Koszt = ilość obiektów * ilość świateł

Koszt obliczeniowy cieniowania Cieniowanie opóźnione Rendering tylko zapisanie informacji potrzebnych do cieniowania, ale bez cieniowania, niezależność kosztu od ilości świateł Koszt obliczania oświetlenia (postporces) jest niezależny od ilości obiektów na scenie Nie ma problemów z mapami cienia Koszt = ilość obiektów + ilość świateł

Schemat opóźnionego cieniowania W pierwszym przebiegu renderowane są wszystkie obiekty sceny, bez uwzględnienia oświetlenia Wyjściem jest pozycja, normalna, kolor matowy, kolor połyskliwy, i w razie potrzeby inne parametry Mapowania nierówności i przemieszczeń są wykonywane w pierwszym przebiegu zapisana normalna jest bezpośrednio używana do obliczania oświetlenia

Schemat opóźnionego cieniowania Następnie wykonywane są kolejne przebiegi, po jednym dla każdego światła Przebiegi te na wejściu otrzymują wyłącznie obrazy 2D, pomijane są pozostałe informacje o scenie Wejściem przebiegów oświetlenia są: Wyjścia pierwszego przebiegu W razie potrzeby mapa cienia (dla jednego światła) Wejściem może być też lista fragmentów zamiast obrazów 2D obiekty półprzeźroczyste

Schemat opóźnionego cieniowania Wyjściem jest obraz oświetlony tylko i wyłącznie przez renderowane w danym przebiegu światło Przebiegi oświetlenia zapisują wyniki do tekstury, używając dodawania jako trybu mieszania alfa, tak aby nie nadpisać poprzednich wyników Tekstura może być w formacie zmiennoprzecinkowym łatwe dodanie techniki HDR Początkowo zwykle tekstura czyszczona jest kolorem czarnym

Bufory G (G-Buffers)

Bufory G (G-Buffers)

Bufory G (G-Buffers)

Bufory G (G-Buffers)

Bufory G (G-Buffers)

Bufory G (G-Buffers)

Bufory G (G-Buffers) Przechowują dane niezbędne do oświetlenia Pozycja, normalna Kolory matowy i w razie potrzeby połyskliwy Być może też inne dane w przypadku stosowania bardziej zaawansowanych modeli oświetlenia Problemem jest zajętość pamięci i przepustowość GPU VRAM Konieczność dobrania odpowiedniego formatu tekstury do wymaganej precyzji

Bufory G c.d. Format IEEE float 32 prawie zawsze jest zbyt kosztowny obliczeniowo i pamięciowo Najprościej jest zastosować format float 16 (half) Można też eksperymentować z innymi formatami, jeszcze bardziej ograniczając zużycie pamięci kosztem minimalnej utraty precyzji Opłaca się też odrzucić część danych, które będzie można potem odtworzyć Obecnie proste obliczenia są tańsze niż użycie pamięci

Bufory G c.d. Zapis pozycji można ograniczyć tylko do głębi Mając głębię, współrzędne fragmentu i macierz projekcji można odtworzyć pozycję w przestrzeni widoku W przypadku cieniowania w przestrzeni widoku można pominąć składową Z normalnej Z = (1 X 2 Y 2 ) 0.5 Zawsze ujemna albo zawsze dodatnia, w zależności od skrętności układu współrzędnych Niestety stwierdzenie to nie jest prawdziwe w przypadku stosowania map normalnych

Bufory G c.d. Kodowanie normalnej na dwóch komponentach bez założenia konkretnej wartości znaku składowej Z Zapis do buforu G: G.xy = normalize(n.xy)*(0.5nz + 0.5) 0.5 Odczyt z buforu G: N.z = 2 G.xy 2 1 N.xy = normalize(g.xy)*(1 N.z 2 ) 0.5

Bufory G c.d. Mapowanie nierówności i przemieszczeń zostało już wykonane w pierwszym przebiegu Zatem styczne na ogół nie będą już potrzebne Mogą one być jednak przydatne przy materiale stosującym odbicie anizotropowe (wykład 2) Można zapewnić, że wektory T, B i N będą wzajemnie prostopadłe Wtedy wystarczy zapamiętać kwaternion opisujący obrót referencyjnego układu współrzędnych trzy komponenty, oraz skrętność układu jeden komponent

Obliczanie oświetlenia Oświetlenie obliczane jest w postprocesie w oparciu o bufory G Najprościej jest dla każdego światła renderować pełnoekranowy czworokąt jest to jednak kosztowne obliczeniowo i zupełnie nieopłacalne O wiele lepiej jest renderować bryłę ograniczającą (bounding box, bounding sphere, ) dla każdego światła Użycie buforu szablonu

Obliczanie oświetlenia c.d. Szablon czyszczony zerami W pierwszym przebiegu: rendering tylko ścian tylnych, z testem głębi większy lub równy Zapis tylko do szablonu jedynek, tam gdzie przeszedł test głębi

Obliczanie oświetlenia c.d. W drugim przebiegu: rendering tylko ścian przednich, z testem głębi mniejszy lub równy i testem szablonu równy Tylko te fragmenty są oświetlone

Obliczanie oświetlenia c.d. Powyżej przedstawiony algorytm działa poprawnie tylko wtedy, gdy obserwator znajduje się na zewnątrz bryły ograniczającej światła Jeżeli obserwator jest w środku, to nie pozostaje nic innego jak rendering pełnoekranowego czworokąta Jeżeli światło jest nieskończone, np. światło kierunkowe, to też trzeba renderować pełnoekranowy czworokąt

Obliczanie oświetlenia c.d. Dwuprzebiegowy rendering z buforem szablonu nie zawsze jest opłacalny Czasami (szczególnie na najnowszych kartach) szybszy jest rendering bryły ograniczającej, najlepiej zwykłego prostopadłościanu Technika ta jest lepsza wtedy, gdy wąskim gardłem jest wydajność CPU, a nie karty graficznej

Obiekty półprzeźroczyste Z punktu widzenia cieniowania obiekty półprzeźroczyste można podzielić na dwie kategorie: Obiekty naklejane (decals) Obiekty niezależne Obiekty naklejane nie wymagają niezależnego cieniowania można je bezproblemowo stosować wraz z cieniowaniem opóźnionym Obiekty takie zmieniają pewne dane w buforach G, jednak nie wpływają na pozycję (głębię)

Obiekty naklejane

Obiekty naklejane

Obiekty półprzeźroczyste c.d. Obiekty półprzeźroczyste, które mają własne pozycje, przy cieniowaniu opóźnionym trzeba uwzględniać w specjalny sposób Rendering obiektów nieprzeźroczystych najpierw, przy pomocy cieniowania opóźnionego, potem obiektów półprzeźroczystych w tradycyjny sposób Jeżeli istnieje duża ilość obiektów półprzeźroczystych, oświetlanych przez dużą ilość świateł, to ich rendering będzie mieć decydujący wpływ na wydajność Problem kolejności renderingu tych obiektów

Obiekty półprzeźroczyste c.d. Technika Depth peeling Można ją zastosować przy cieniowaniu opóźnionym podobnie jak przy cieniowaniu tradycyjnym Przebieg renderingu geometrii i przebiegi oświetlenia dla każdej warstwy głębi Kompozycja kolejnych warstw głębi, na końcu rendering obiektów nieprzezroczystych Te same problemy związane z wydajnością (nieograniczona z góry ilość przebiegów), co w renderingu tradycyjnym

Obiekty półprzeźroczyste c.d. Listy fragmentów na piksel Tą technikę też można stosować wraz z cieniowaniem opóźnionym Dla każdego fragmentu, zamiast ostatecznego koloru, zapamiętywane są informacje takie same jak w buforach G, a także przeźroczystość Niestety przy cieniowaniu opóźnionym z listami fragmentów potrzeba o wiele więcej pamięci niż przy cieniowaniu tradycyjnym

Antyaliasing Podstawowe algorytmy kosztowne pamięciowo i obliczeniowo Rendering do tekstury o N razy większej rozdzielczości (supersampling) Potrzeba N 2 razy więcej pamięci i czasu, poza tym OK. Rendering do tekstury w trybie multisampling Zastosowanie sprzętowego antyaliasingu GPU Ogranicza wymagania czasowe Nie zmienia wymagań pamięciowych

Antyaliasing morfologiczny Kompromis pomiędzy jakością a wydajnością Rendering do takich samych tekstur jak bez antyaliasingu Brak wzrostu zużycia pamięci Przetwarzanie w postprocesie pewien koszt obliczeniowy, ale na ogół znacznie mniejszy niż koszt supersamplingu Zależy to od złożoności sceny

Antyaliasing morfologiczny c.d.

Antyaliasing morfologiczny c.d.

Antyaliasing morfologiczny c.d. Wykrywanie wzorców w obrazie Adaptywne rozmywanie krawędzi, w zależności od wykrytego wzorca Proste dla obrazów 1-bitowych (czarno-białych) Np. cienie Bardziej skomplikowane, ale też możliwe do wykonania dla obrazów kolorowych

Antyaliasing morfologiczny c.d.

Technika Light Pre-Pass

Technika Light Pre-Pass c.d. Alternatywa dla cieniowania opóźnionego Schemat algorytmu: Pierwszy przebieg: rendering geometrii, zapis tylko i wyłącznie pozycji (głębi) i normalnej Przebieg oświetlenia: rendering oświetlenia od świateł do buforów światła dla odbicia matowego i połyskliwego Drugi przebieg geometrii: oświetlenie przy pomocy buforów światła

Technika Light Pre-Pass c.d.

Podsumowanie kiedy stosować cieniowanie opóźnione Technika cieniowania opóźnionego nie zawsze jest najlepszym wyborem Warto ją stosować dla scen z dużą ilością świateł i prostymi materiałami Jest ona nieopłacalna dla scen otwartych z jednym światłem (Słońcem) bądź dwoma (Słońcem i dodatkowym światłem dopełniającym) W przypadku scen z dużą ilością świateł i obiektów półprzeźroczystych trzeba sprawdzić co jest bardziej wydajne

Dziękuję za uwagę