Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Light pre-pass renderer

Podobne prezentacje


Prezentacja na temat: "Light pre-pass renderer"— Zapis prezentacji:

1 Light pre-pass renderer
Marcin Korniluk

2 Plan prezentacji Podejście klasyczne i Z pre-pass Carmacka
Deferred shading Light pre-pass renderer Demo Podsumowanie Marcin Korniluk - Light Pre-Pass Renderer

3 Podejście Klasyczne To każdy zna
Marcin Korniluk - Light Pre-Pass Renderer

4 Podejście klasyczne Opcja 1: Jeden przebieg Opcja 2: Wiele przebiegów
Warianty shaderów dla różnych świateł Słaby batching Opcja 2: Wiele przebiegów Mało shaderów Dużo niepotrzebnej pracy Minimalizacja ilości przetwarzanych świateł Marnotrawstwo cykli Marcin Korniluk - Light Pre-Pass Renderer

5 Z Pre-Pass Carmacka Pierwszy przebieg rysuje tylko głębię
Sortowanie „od najbliższych” Prosty shader Drugi przebieg rysuje resztę Kompletne shadery Minimalna nadmiarowość rysowania Nadal wiele wad Wykorzystane przez producentów GPU Marcin Korniluk - Light Pre-Pass Renderer

6 Deferred Shading Przypomnienie
Marcin Korniluk - Light Pre-Pass Renderer

7 Deferred shading Pomysł padł na SIGGRAPH 88
Złożoność oświetlenia O(n+m) zamiast O(nm) Rozbicie renderowania na 2 etapy Geometrii Oświetlenia Marcin Korniluk - Light Pre-Pass Renderer

8 Deferred shading – cd. Obiekty lite Obiekty przezroczyste Kolor
Normalne Głębokość Intensywność Oświetlenie i rysowanie Rysowanie 2 Marcin Korniluk - Light Pre-Pass Renderer

9 Deferred shading – etap geometrii
Dane sceny zapisywane do kilku buforów R8 G8 B8 A8 Depth Stencil Lighting Accumulation RGB Intensity Normal.x Normal.y Motion.x Motion.y Spec-power Spec-Intensity Diffuse Albedo RGB Sun-Occlusion Marcin Korniluk - Light Pre-Pass Renderer

10 Deferred shading – etap oświetlenia
Światła jako bryły Parametry per pixel pobierane z G-Bufora Możliwa duża ilość świateł Marcin Korniluk - Light Pre-Pass Renderer

11 Deferred shading – wady
Anti-aliasing Brak sprzętowego wsparcia MSAA Alpha blending Nie można zapisywać głębokości obiektów przezroczystych Fill rate bound Ograniczenia materiałów Materiały muszą być prawie jednakowe Marcin Korniluk - Light Pre-Pass Renderer

12 Light Pre-Pass Renderer
Nowe podejście Light Pre-Pass Renderer Marcin Korniluk - Light Pre-Pass Renderer

13 Light pre-pass renderer
Wolfgang Engel – czerwiec 2007 Lekkie podejście do deferred shadingu 3 etapy renderowania Przygotowanie Oświetlenie Rysowanie Marcin Korniluk - Light Pre-Pass Renderer

14 Light pre-pass renderer – cd.
Obiekty lite Obiekty przezroczyste Normalne Głębokość Oświetlenie Rysowanie Rysowanie 2 Marcin Korniluk - Light Pre-Pass Renderer

15 Light pre-pass – przygotowanie
Do bufora zapisujemy normalne i głębokość Potrzebne do oświetlenia Wystarczy jeden RT RGBA8 Sortowanie „od najbliższego” R8 G8 B8 A8 Normal.x Normal.y Depth Marcin Korniluk - Light Pre-Pass Renderer

16 Pakowanie danych – normalna
Trzecią współrzędną normalnej da się wyznaczyć Twierdzenie Pitagorasa Znak jest stały (w większości przypadków) Dla RT RGBA16F nie trzeba pakować Marcin Korniluk - Light Pre-Pass Renderer

17 Pakowanie danych – pozycja
Wystarczy zapisać długość wektora float3 eyeVec = float3(x * aspect, y, 1/tan(fov/2)); float4 pixelPosView = float4(normalize(eyeVec) * depth; Marcin Korniluk - Light Pre-Pass Renderer

18 Light pre-pass – przygotowanie, cd.
Marcin Korniluk - Light Pre-Pass Renderer

19 Light pre-pass – oświetlenie
Do bufora zapisywane oświetlenie Światła renderowane jako bryły Wystarczy jeden RT RGBA8 HDR Techniki optymalizacji jak w deferred shading Takie same zalety I wady Marcin Korniluk - Light Pre-Pass Renderer

20 Pakowanie danych – kolor
RGB źle się pakuje Można pominąć kolor zwierciadlany Może YUV? R8 G8 B8 A8 Diffuse.r Diffuse.g Diffuse.b Specular Marcin Korniluk - Light Pre-Pass Renderer

21 Light pre-pass – oświetlenie, cd.
Marcin Korniluk - Light Pre-Pass Renderer

22 Light pre-pass – rysowanie
Rysowanie „od najbliższego” Minimalna nadmiarowość Dowolność materiałów Obiekty przezroczyste rysowane klasycznie Podobnie jak w deferred shading Marcin Korniluk - Light Pre-Pass Renderer

23 Light pre-pass – rysowanie, cd.
Przykładowy pixel shader float3 normal = normalize(psIn.normal); float3 light = normalize(psIn.light); float3 view = normalize(psIn.view); float3 diffuseLight = getDiffuseLight(normal,light); float3 specularLight = getSpecularLight(normal,light,view); Marcin Korniluk - Light Pre-Pass Renderer

24 Light pre-pass – rysowanie, cd.
Przykładowy pixel shader float3 diffuseLight = LightBuffer.Sample(sampler,psIn.position).xyz; float specularLight = LightBuffer.Sample(sampler,psIn.position).w; Marcin Korniluk - Light Pre-Pass Renderer

25 Anti-aliasing Sprzętowy MSAA Nie jest tak różowo
Marcin Korniluk - Light Pre-Pass Renderer

26 Rozmiar ramki obrazu Deferred shading Light pre-pass
Marcin Korniluk - Light Pre-Pass Renderer

27 Light pre-pass – wady Efekty z VS Redundantna transformacja sceny
Displacement mapping Redundantna transformacja sceny Koszt porównywalny z generacją SM Idealna nadmiarowość odrysowywania Marcin Korniluk - Light Pre-Pass Renderer

28 Light pre-pass – wady, cd.
Alpha-blending Przezroczyste obiekty rysowane klasycznie Depth-peeling, A-Buffer, SRK-Buffer, PP Linked List … Wysoki fill rate Niższy niż dla DS. Ulepszenia takie jak dla DS. Rysowanie brył otaczających Algorytm Lengyela Marcin Korniluk - Light Pre-Pass Renderer

29 Light pre-pass – wady, cd. 2
Rekonstrukcja koloru Nagięcie reguł daje dobre rezultaty Marcin Korniluk - Light Pre-Pass Renderer

30 Demo Marcin Korniluk - Light Pre-Pass Renderer

31 Podsumowanie 2 slajdy do końca
Marcin Korniluk - Light Pre-Pass Renderer

32 Podsumowanie Brak ograniczeń MRT Sprzętowy anti-aliasing
Niski fill-rate Dwukrotne transformacje Ale bez oświetlenia Bardzo dobry batching Marcin Korniluk - Light Pre-Pass Renderer


Pobierz ppt "Light pre-pass renderer"

Podobne prezentacje


Reklamy Google