1 / 32

Light pre-pass renderer

Light pre-pass renderer. Marcin Korniluk. Plan prezentacji. Podejście klasyczne i Z pre-pass Carmacka Deferred shading Light pre-pass renderer Demo Podsumowanie. To każdy zna. Podejście Klasyczne. Podejście klasyczne. Opcja 1: Jeden przebieg Warianty shaderów dla różnych świateł

atara
Download Presentation

Light pre-pass renderer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lightpre-passrenderer Marcin Korniluk

  2. Plan prezentacji • Podejście klasyczne i Z pre-passCarmacka • Deferredshading • Lightpre-passrenderer • Demo • Podsumowanie Marcin Korniluk - Light Pre-Pass Renderer

  3. To każdy zna Podejście Klasyczne Marcin Korniluk - LightPre-PassRenderer

  4. Podejście klasyczne • Opcja 1: Jeden przebieg • 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-PassCarmacka • 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. Przypomnienie DeferredShading Marcin Korniluk - LightPre-PassRenderer

  7. Deferredshading • 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. Deferredshading – cd. • Obiekty lite • Obiekty przezroczyste Kolor Normalne Głębokość Intensywność Oświetlenie i rysowanie Rysowanie 2 Marcin Korniluk - Light Pre-Pass Renderer

  9. Deferredshading – etap geometrii • Dane sceny zapisywane do kilku buforów Marcin Korniluk - Light Pre-Pass Renderer

  10. Deferredshading – 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. Deferredshading – wady • Anti-aliasing • Brak sprzętowego wsparcia MSAA • Alphablending • Nie można zapisywać głębokości obiektów przezroczystych • Fillratebound • Ograniczenia materiałów • Materiały muszą być prawie jednakowe Marcin Korniluk - Light Pre-Pass Renderer

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

  13. Lightpre-passrenderer • Wolfgang Engel – czerwiec 2007 • Lekkie podejście do deferredshadingu • 3 etapy renderowania • Przygotowanie • Oświetlenie • Rysowanie Marcin Korniluk - Light Pre-Pass Renderer

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

  15. Lightpre-pass – przygotowanie • Do bufora zapisujemy normalne i głębokość • Potrzebne do oświetlenia • Wystarczy jeden RT RGBA8 • Sortowanie „od najbliższego” 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 float3eyeVec = float3(x * aspect, y, 1/tan(fov/2)); float4pixelPosView = float4(normalize(eyeVec) * depth; Marcin Korniluk - Light Pre-Pass Renderer

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

  19. Lightpre-pass – oświetlenie • Do bufora zapisywane oświetlenie • Światła renderowane jako bryły • Wystarczy jeden RT RGBA8 • HDR • Techniki optymalizacji jak w deferredshading • Takie same zalety • I wady Marcin Korniluk - LightPre-PassRenderer

  20. Pakowanie danych – kolor • RGB źle się pakuje • Można pominąć kolor zwierciadlany • Może YUV? Marcin Korniluk - Light Pre-Pass Renderer

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

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

  23. Lightpre-pass – rysowanie, cd. • Przykładowy pixelshader float3normal = normalize(psIn.normal); float3light = normalize(psIn.light); float3view = normalize(psIn.view); float3diffuseLight =getDiffuseLight(normal,light); float3specularLight = getSpecularLight(normal,light,view); Marcin Korniluk - Light Pre-Pass Renderer

  24. Lightpre-pass – rysowanie, cd. • Przykładowy pixelshader float3diffuseLight = LightBuffer.Sample(sampler,psIn.position).xyz; floatspecularLight = 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 • Deferredshading • Lightpre-pass Marcin Korniluk - Light Pre-Pass Renderer

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

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

  29. Lightpre-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. 2 slajdy do końca Podsumowanie 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

More Related