Deferred shading jako wydajna technika o wietlenia
Sponsored Links
This presentation is the property of its rightful owner.
1 / 33

Deferred shading jako wydajna technika oświetlenia PowerPoint PPT Presentation


  • 128 Views
  • Uploaded on
  • Presentation posted in: General

Deferred shading jako wydajna technika oświetlenia. Wojciech Toman. Omawiane zagadnienia. Dotychczasowe podejście do oświetlenia Idea deferred shadingu Typowe problemy wraz z propozycjami rozwiązania Optymalizacja wydajności Integracja z modułem renderującym Podsumowanie.

Download Presentation

Deferred shading jako wydajna technika oświetlenia

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Deferredshading jako wydajna technika oświetlenia

Wojciech Toman


Omawiane zagadnienia

  • Dotychczasowe podejście do oświetlenia

  • Idea deferredshadingu

  • Typowe problemy wraz z propozycjami rozwiązania

  • Optymalizacja wydajności

  • Integracja z modułem renderującym

  • Podsumowanie


Deferredshading jako wydajna technika oświetlenia

Dotychczasowe podejście


Dotychczasowe podejście

  • Renderowanie świateł z użyciem wielu przebiegów renderingu:

    • Duża złożoność czasowa: O(liczba_świateł * liczba_obiektów)

    • Brak możliwości uzyskania dobrego batchingu (sortowanie po światłach lub geometrii) – częste przełączanie shaderów i stanów urządzenia

  • Wniosek: na geometrię wpływa tylko część świateł


Dotychczasowe podejście

  • Uniwersalne shadery:

    • 1 przebieg renderingu

    • Inne zachowanie shaderów dla 1, 2, …, n świateł i wszystkich przewidzianych kombinacji modeli oświetlenia

    • Długi, nieczytelny kod shadera

    • Konieczność stosowania branchingu bądź makr

    • Nieelastyczność – ciężko dodać nowe światło

    • Przyzwoity batching przy sortowaniu po materiałach


Deferredshading jako wydajna technika oświetlenia

Idea deferredshadingu


Idea deferredshadingu

  • Rozbicie renderingu na dwie fazy:

    • Geometrii

    • Oświetlenia


Faza geometrii

  • Właściwości geometryczne sceny 3D są renderowane do kilku rendertargetów

    • Render-targety te noszą nazwę G-Bufora (ang. G-Buffer), bufora geometrii

    • Użycie mechanizmu MRT (ang. MultipleRender Target)

    • Zwykle duża głębia dla zachowania precyzji przechowywanych danych


Faza geometrii

  • Renderowane dane

    • Kolor rozpraszania

    • Wektory normalne

    • Informacje o położeniu pikseli

    • Specular

    • Glow

    • Ambient-term

    • Itd.


Faza geometrii

  • Wiele właściwości materiału jest stałych w ramach powierzchni

    • Zastosowanie bufora materiałów

      • Tekstura zawierająca potrzebne dane, w której każdy wiersz odpowiada innemu materiałowi

      • Tablica stałych shadera

    • Wniosek: jednym z atrybutów zapisywanych w G-Buforze jest indeks materiału


Przykład zawartości G-Bufora

Kolor rozpraszania


Przykład zawartości G-Bufora

Wektory normalne w przestrzeni widoku


Przykład zawartości G-Bufora

Odwrotność głębokości pikseli w przestrzeni widoku


Faza oświetlenia

  • Dekodowanie danych zawartych w G-Buforze

  • Obliczenia zgodnie z przyjętym modelem oświetlenia

    • Dowolny, zależy tylko od użytego shadera

  • Rendering prostokąta z włączonym blendingiem addytywnym dla każdego światła

  • Wniosek: liczba źródeł światła teoretycznie jest nieograniczona


Przykład oświetlonej sceny

światło


Przykład oświetlonej sceny

Kilka kolorowych świateł punktowych wykorzystujących specular


Przykład oświetlonej sceny

Kilka kolorowych świateł punktowych wykorzystujących specular oraz atmosphericscaterring


Deferredshading jako wydajna technika oświetlenia

Problemy


Problemy – Anti-aliasing

  • MRT nie wspiera sprzętowego anti-aliasingu

  • Wszystkie obliczenia wykonywane są w przestrzeni ekranu – brak informacji o krawędziach

  • Rozwiązania

    • Akceptacja problemu – kompromis pomiędzy jakością a wydajnością renderingu

    • Over-sampling – rendering obrazu do rendertargetów o rozdzielczości przekraczającej rozdzielczość widoku

    • Własny filtr post-process – wykrywanie krawędzi a później ich wygładzenie

    • W DirectX 10 możliwy dostęp bezpośrednio do próbek MSAA – możliwość przeprowadzenia anti-aliasingu w oparciu o dowolny wzorzec


Anti-aliasing w DirectX 9.0c

Filtr wykrywający krawędzie


Anti-aliasing w DirectX 9.0c

Brak anti-aliasingu

Włączony anti-aliasing


Anti-aliasing w DirectX 9.0c

Brak anti-aliasingu

Włączony anti-aliasing


Problemy – Alpha-blending

  • Alpha-blending jest koszmarem!

    • Standardowe podejście nie działa

    • Istniejące rozwiązania mają liczne wady

  • Rozwiązania

    • Rendering wszelkich półprzezroczystych obiektów po narysowaniu pozostałych

    • Depth-peeling lub A-Buffer (praktycznie tylko w przypadku DirectX 10)


Problemy – Fill-ratebound

  • Wszystkie rendertargety zwykle odpowiadają rozdzielczości ekranu

  • Wiele odczytów i zapisów do tekstur

  • Rozwiązanie

    • Nierysowanie całoekranowych prostokątów

      • Scissor-test – wykonywany dużo wcześniej niż na konceptualnym diagramie w DirectX SDK – możliwość odrzucenia całych fragmentów przed wykoniem pixel shadera

      • Stencil-test (uruchamiany później) – pixelshader musi być wykonany, a zatem test jest mniej przydatny


Problemy – Fill–ratebound

Diagram konceptualny DirectX SDK 9.0c


Problemy – Fill-ratebound

  • Scissor-test

    • Zwykła projekcja świateł do przestrzeni ekranu może wygenerować zbyt duże prostokąty oraz artefakty związane z umiejscowieniem kamery w bryle otaczającej światła

    • Alternatywa: zastosowanie algorytmu zaproponowanego przez Lengyela


Problemy – Fill-ratebound

  • Algorytm Lengyela

    • Konstrukcja czterech płaszczyzn przechodzących przez punkt, w którym umieszczona jest kamera i stycznych do bryły otaczającej światła

    • Wyznaczenie przecięcia płaszczyzn z płaszczyzną obrazu

    • Punkty przecięcia to szukane współrzędne prostokąta dla scissor testu


Deferredshading jako wydajna technika oświetlenia

Optymalizacja wydajności


Optymalizacja wydajności

  • Sumowanie wpływu świateł

  • Odrzucanie świateł, które w małym stopniu wpływają na wygląd sceny

  • Pakowanie

    • Wektory normalne – jeśli obliczenia wykonywane są w przestrzeni widoku to wszystkie trójkąty front-faced mają ten sam znak, a back-faced – przeciwny

      • Możliwe jest zastosowanie twierdzenia Pitagorasa - przechowywanie tylko 2 współrzędnych

    • Zamiast całego wektora położenia przechowywanie jedynie długości wektora położenia w przestrzeni widoku (głębokości piksela)


Optymalizacja wydajności

  • Pakowanie wektora położenia

float3eyeVec = float3(IN.position.x * aspect, IN.position.y, invTanHalfFov);

float3P = normalize(eyeVec) * depth;


Integracja z modułem renderującym

  • Zwykle bezproblemowa

  • Zastosowanie HDRI

  • Efekty post-process można traktować jako światła globalne

    • Łańcuch renderingu upraszcza się do dwóch faz

  • Konieczność dobrego zaplanowania G-Bufora

    • Przeprojektowanie może się wiązać z koniecznością przerobienia większości shaderów


Deferredshading jako wydajna technika oświetlenia

Podsumowanie


Podsumowanie

  • Wydajne rysowanie bardzo dużej liczby świateł

  • Niemal doskonały batching - lepszy oferują jedynie bufory świateł

  • Wysoka elastyczność

  • Łatwa integracja z modułem renderującym

  • Duże zużycie pamięci karty graficznej (zwykle kilkadziesiąt MB)

  • Fill-ratebound

  • Problemy z anti-aliasingiem

  • Problemy z alpha-blendingiem

  • Bardzo wysokie wymagania sprzętowe

Zalety

Wady


  • Login