Michał Drobot Technical Art Director Reality Pump

Slides:



Advertisements
Podobne prezentacje
Modelowanie i symulacja
Advertisements

Modele oświetlenia Punktowe źródła światła Inne
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Podstawy grafiki komputerowej
Programowanie I Rekurencja.
Zadanie z dekompozycji
Wydajne aplikacje na platformie .NET
Implementacja algorytmów na procesory kart graficznych
Przekształcenia afiniczne
Pracownia Gier w OpenGL
1 RISC – nasze założenia Podstawowe cechy: Wszystkie operacje są realizowane na rejestrach, Tylko operacje typu load i store wymagają dostępu do pamięci,
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
ZŁOŻONOŚĆ OBLICZENIOWA
Koncepcja Geoprzestrzennego Systemu Informacji o Terenie Górniczym
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Animacja Animacja jest procesem automatycznego generowania serii obrazów, gdy kolejny obraz przedstawia pewną zmianę w stosunku do poprzedniego. Ta definicja.
Zadanie 1.
Projektowanie i programowanie obiektowe II - Wykład IV
Modele baz danych - spojrzenie na poziom fizyczny
Zarządzanie innowacjami
Przegląd ważniejszych bibliotek używanych przy projekcie Quall.
Zastosowanie technologii CUDA w sztucznej inteligencji
Mechanizm kompresji danych w SQL Server 2008
Michał Drobot Technical Art Director Reality Pump
Zbiór do posortowania mieści się w pamięci
Dane do obliczeń.
Instytut Tele- i Radiotechniczny WARSZAWA
Podstawy programowania
Metody matematyczne w Inżynierii Chemicznej
Excel Wykład 3.. Importowanie plików tekstowych Kopiuj – wklej Małe pliki Kolumny oddzielone znakiem tabulacji Otwieranie/importowanie plików tekstowych.
Obserwatory zredukowane
Główne cechy systemu Integracja z systemem RCP Przejrzysty moduł raportowania pozwalający wyświetlać zarejestrowane zdjęcia wraz z raportem czasu pracy.
Detekcja twarzy w obrazach cyfrowych
Karty graficzne Karta graficzna, często określana też mianem akcelerator grafiki, to element komputera tworzący sygnał dla monitora. Podstawowym zadaniem.
AECHITEKTURA OBIEKTÓW TECHNICZNYCH
Grafika komputerowa Wykład 6 Podstawowe algorytmy grafiki 2D
Advanced Soft Shadows Michał Drobot Technical Art Director Reality Pump.
Light pre-pass renderer
Zaawansowane techniki renderingu
Buforowanie D e f i n i c j a.
Enterprise Architecture Patterns
Architektury Deferred Michał Drobot Technical Art Director Reality Pump.
Grafika komputerowa Jest to dziedzina rozwijająca się niezwykle dynamicznie, a jednocześnie wymagająca znacznej mocy obliczeniowej. Łatwo możemy to zaobserwować,
Wojciech Toman. Dotychczasowe podejście do oświetlenia Idea deferred shadingu Typowe problemy wraz z propozycjami rozwiązania Optymalizacja wydajności.
Matematyka i system dwójkowy
Wykład 7 Synchronizacja procesów i wątków
Procesor, pamięć, przerwania, WE/WY, …
Grafika i komunikacja człowieka z komputerem
PWSW Mechatronika Wykład 7 Matlab cd.
Teksturowanie oraz algorytmy cieniowania
Grafika komputerowa Dr inż. Piotr Gronek
Procesor tekstu Word część 3
Tryby adresowania i formaty rozkazów mikroprocesora
Draver/GRK/cw3_result.jpg. Grafika 3D Wprowadzenie.
1 Mapan i Mapnik. Czyli kilka słów o przeglądarkach leśnej mapy numerycznej. Zespół Zadaniowy ds. Leśnej Mapy Numerycznej. Margonin r.
ARC PAD Zespół Zadaniowy ds. Leśnej Mapy Numerycznej w Lasach Państwowych.
Treść dzisiejszego wykładu l Szeregi stacjonarne, l Zintegrowanie szeregu, l Kointegracja szeregów.
Grafika komputerowa Dr inż. Michał Kruk. Reakcja ś wiat ł a z materi ą : – Odbicie ś wiat ł a – Przenikanie ś wiat ł a Zale ż ne od w ł a ś ciwo ś ci.
Podstawy automatyki I Wykład 3b /2016
Modelowanie i podstawy identyfikacji
Układ ciągły równoważny układowi ze sterowaniem poślizgowym
ETO w Inżynierii Chemicznej
Sterowanie procesami ciągłymi
* PROCESÓW TECHNOLOGICZNYCH
PGO Przeciążanie metod i konstruktorów
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Michał Drobot Technical Art Director Reality Pump Multi Light Shading Michał Drobot Technical Art Director Reality Pump

Plan wykładu Problem wielu świateł Architektury oświetlenia Forward Rendering Single-pass, multi-light Multi-pass, multi-light Deferred rendering Deferred Shading

Problem wielu świateł Współczesne gry wymagają Zaawansowanego oświetlenia dynamicznego Wielu świateł na klatkę >10 scenariusze polowe >50 scenariusze miejskie Metod aproksymacji GI (global Illumination) Być może przy pomocy wielu świateł

Problem wielu świateł Światła istnieją jako obiekty w świecie gry Dwie podstawowe metody Przekazać światła do shaderów obiektów, aby zostały uwzględnione w modelu oświetlenia Wyrenderować światła do buforów pośrednich rozbijając równanie oświetlenia

Problem wielu świateł Light = Ambient + Sum(N.L * Att * LightD + N.L * (N.H)^n * MatSpecD * N.L *Att) Należy wyliczyć sumę oświetlenia dla dalszych obliczeń materiału BRDF(Light) BRDF(DiffuseLight,Specular)

Single Pass, Multi-light Dla każdego obiektu Znajdź światła mające wpływ na obiekt Partycjonowanie przestrzeni Kosztowne sortowania i sprawdzania dystansu Wyrenderuj wszystkie światła i materiał w pojedynczym shaderze Eksplozja shaderów Potrzebna ilość shaderów = kombinacje(materiał , ilość świateł) Ciężka integracja z cieniami Shadow mapy muszą być ciągle w pamięci Zmarnowane cykle GPU Trójkąty poza zasięgiem światła Niewidoczne obiekty / overdraw

Multi Pass, Multi-light Dla każdego światła Dla każdego obiektu Dodaj oświetlenie od światła do framebuffera FrameBuffer += brdf(object, light) Eksplozja shaderów Potrzebna ilość shaderów = kombinacje(materiał , ilość świateł) Zmarnowane cykle GPU Trójkąty poza zasięgiem światła Niewidoczne obiekty / overdraw Dużo powtarzanej pracy z każdym passem Transformacje vertexów Filtrowanie Wysoki Batch Count (1/obiekt/światło)

Deferred Rendering Dla każdego światła i każdego oświetlanego pixela Dla każdego obiektu Wyrenderuj parametry powierzchni do G-Buffera Dla każdego światła i każdego oświetlanego pixela Użyj G-Buffera do obliczeń światła Dodaj wynik do framebuffera Proste shadery Dobrze skalowalne ze wzrostem ilości pixeli jak i światel Problematyczna obsługa przeźroczystości Łatwa integracja cieni Złożoność głębi dla świateł O(1) Wiele małych świateł = jedno duże

Deferred Rendering Do wyliczenia równania światła potrzebujemy Light = Ambient + Sum(N.L * Att * LightD + N.L * (N.H)^n * MatSpecD * N.L *Att) BRDF(Light) OR BRDF(Diffuse,Specular) Do wyliczenia równania światła potrzebujemy Normal Pozycja Atrybuty Specular Intensity, Specular Glossines (n)

Deferred Rendering BRDF(Diffuse, Specular) Do obliczenia pełnego BRDF potrzeba dodatkowo Material Diffuse Material Attributes Typ materiału Parametry materiału niezależne od światła

Deferred Shading Obiekty nieprzeźroczyste Przeźroczyste obiekty Normals Specular / Motion Vec Albedo / Shadow Depth Buffer Light Buffer Wyłączone pisanie Depth Forward Rendering Deferred Lighting Sortowanie Back – To - Front

Deferred Shading Podczas wyliczeń światła tworzymy light buffer Zapisujemy pełen G-Buffer dla pełnego wyliczenia BRDF Podczas jednego przebiegu geometrii Każde światło renderujemy z osobna jako Quad o wymiarach policzonych w screen space Kule – point light Stożek – spot light Podczas wyliczeń światła tworzymy light buffer Ostatecznie wyliczamy pełen BRDF podczas Deferred Lighting Pass Integruje materiały z wynikami light buffera

Deferred Shading Rozbijamy warstwę obliczeń geometrii i światła na dwa osobne przebiegi Przebieg geometrii generuje parametry w pełni opisujące materiał jak i jego interakcje ze światłem Przykładowy G-Buffer (Killzone 2)

Deferred Shading MRT Podczas przebiegu geometrii piszemy do wszystkich buforów Bufory muszą mieć ten sam alignment Np. możliwe kombinacje (również uzależnione od platformy) RGBA16 RG32 W TW2 RGBA8 – Diffuse, Specular Intensity RGBA8 – XY Normal, Specular Glossines, Material ID RGBA8 – Linear Depth zapisana na 32bitach (nieobecny na konsolach ze względu na bezpośredni dostęp do Zbufora)

Deferred Rendering Operacje wektorowe wyliczenia światła Potrzebujemy Pozycji pixela w WorldSpace lub ViewSpace Pozycji Światła w WS lub VS Dla uproszczenia przyjmijmy wykonywanie obliczeń w View Space (Camer Space)

Deferred Rendering Pozycja Pozycje pixela w CS możemy zapisać do MRT Wymaga dużej precyzji i 3 kanałów RGBA16F Marnowanie pamięci i przepustowości Pozycja może być odtworzona z położenia pixela na ekranie oraz jego głębi liniowej w CS Macierz odwrotna do macierzy projekcji

Deferred Rendering Normalne Ze względu na precyzję oraz znak zapisujemy w CS Znak zawsze dodatni Umożliwia kompresje bufora Normal.z = sqrt(1.0 – Normal.x^2 – Normal.y^2)

Deferred Rendering Atrybuty powierzchni Przechowywane w sposób upakowany Czasem wymagana kompresja zakresu Np. Specular Power do skali log itp

Deferred Rendering Głębia Zapisywana w formacie liniowym (Position.z w CS) zamiast log Z-bufora W przypadku formatów INT możliwy zapis poprzez kompresje Float->RGB8 Kompresja ręczna, zależna od dokładności Na konsolach możliwy odczyt bezpośredni Z-bufora wraz z dekompresją do liniowego

Deferred Rendering Light Buffer Preferowany format HDR RGBA16F RGB – Light Diffuse A – Specular Intensity Dla każdego światła (Light Accumulation) W trybie ADD Blend Renderujemy w CS Convex Hull reprezentujący wymiary światła w CS Quad Sphere Cone Dodatkowe przebiegi dla świateł kierunkowych (słońce) oraz Ambient Light

Deferred Rendering Deffered Lighting Przebieg czyta Light Buffer Bufory atrybutów materiałów (minimalnie Diffuse Color) Wykonuje obliczenia BRDF Wspólny BRDF dla wszystkich pixeli Uwzględnione możliwe parametry materiału Sterowany parametrami (parametr = kanał G-Buffera) Mała customizacja oraz brak skalowalności na ilość parametrów i różne materiały Wiele przebiegów kilku BRDF-ów Wolne ze względu na ilość przebiegów Korzystanie z material ID Seria IF-ów decydująca o wykonaniu BRDF Kosztowna dla ALU Korzystanie z zapisanych BRDF-ów wraz z indexem materiału Textura 3D – (U,V,W) = (N.L , H.L, MaterialID) Wolne w odczycie Tex3D, odczyty zależne, mało funkcjonalne w trakcie produkcji

Deferred Rendering Końcowy bufor Zawiera prawidłowo oświetloną scenę w formacie HDR Na nim przeprowadzamy operacje wblendowywania obiektów nieprzeźroczystych, o materiałach nie uwzględmionych w trybie deferred Dla każdego obiektu specjalnego HDR Framebuffer = (Alpha Blend)[BRDF(obiekt, światła)] - w trybie forward Na nim przeprowadzamy operacje wblendowywania obiektów przeźroczystych Dla każdego przeźroczystego obiektu W trybie Blend (Add, Mul, MulAdd etc.) HDR Framebuffer += BRDF(obiekt, światła) - w trybie forward Podobnie wblendowujemy particle Jest wejściem dla całego etapu post processingu Potem ulega HDR Resolve i uzyskujemy końcowy framebuffer LDR

Deferred Shading Optymalizacje Chcemy oświetlać jedynie geometrie w środku light volume’a Pozostałe pixele są zmarnowaną pracą W środku volume’a Poza volume’em, Będzie cieniowane, Wynik będzie odrzucony Poza volume’em, Nie będzie cieniowane

Optymalizacje Optymalizacje mające na celu ograniczenie cieniowanych obszarów przy użyciu bufora Z Stencil Cull Depth Bound Test

Optymalizacje Optymalizacje mające na celu ograniczenie cieniowanych obszarów przy użyciu bufora Z Stencil Cull Depth Bound Test

Optymalizacje Zaznaczenie pixele przed tylną granicą światła Wyrenderuj back-faces światła Depth test : GREATER-EQUAL Zapisz wynik do STENCIL

Optymalizacje Zaznaczenie pixeli wewnątrz światła Zacznij własciwy shader światła Wyrenderuj front-faces światła Depth test : LESS-EQUAL Wykonaj stencil test EQUAL

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

Questions ?