wtorek, 10 maja 2011

Deferred shading

Deferred shading albo inaczej deferred rendering (po naszemu rendering odroczony) jest alternatywną techniką renderowania sceny 3D z oświetleniem.
Standardowe podejście w najprostszej postaci zakłada wyrenderowanie modelu przy pomocy shadera w którym znajdują się informacje o z góry określonej ilości świateł i ich typów. Istnieje też podejście zwane multi-pass ligtninh które pozwala na użycie wielu różnych świateł jednak jego wadą jest potrzeba w każdym przejściu oświetlenia wykonanie operacji na wierzchołkach.

W wypadku renderingu odroczonego podejście jest inne. Scenę renderuje się do kilku buforów (przy użyciu MRT - Multiple Render Targets) w których zapisuje się takie informacje jak kolor difuse, informacje o kolorze specular, bufor głębokości oraz normalne. Następnie na w buforze oświetlenia rederuje się informacje o oświetleniu aby następnie połączyć te informacje w wynikowy obraz.

Podstawową zaletą tego rozwiązania jest uproszczenie shaderów obiektów scenie w których nie trzeba uwzględniać możliwej ilości świateł i ich typów. Pozwala to też w łatwy sposób definiować kolejne typy świateł i tworzyć sceny z wieloma różnymi światłami, ponieważ każde światło jest reprezentowane przez geometrię (np. sfera dla światłą punktowego, pełno ekranowy quad dla kierunkowego itp.) oraz shader aby uwzględnić specyficzne dla danego światła parametry.

Metoda ta jest wydajniejsza od standardowego podejścia w przypadku scen z wieloma dynamicznymi światłami. Jednak metoda ta też ma swoje wady. Podstawowym problemem jest utrudnione (jednak nie niemożliwe) użycie billboardów czy obiektów przezroczystych. Dodatkowo dla tej metody nie działa sprzętowy anti-aliasing i wygładzanie krawędzi trzeba napisać samemu.

Pomimo swoich wad jest to bardzo ciekawa metoda. Najważniejsze jest jednak w niej to, że sprawdza się w praktyce i jest wykorzystywana w najnowszych produkcjach AAA (lista produkcji na Wikipedii)

Brak komentarzy: