Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Michał Drobot Technical Art Director Reality Pump

Podobne prezentacje


Prezentacja na temat: "Michał Drobot Technical Art Director Reality Pump"— Zapis prezentacji:

1 Michał Drobot Technical Art Director Reality Pump
Shadowing Michał Drobot Technical Art Director Reality Pump

2 Plan wykładu Charakterystyka cienia Algorytmy cieni Shadow Volumes
Shadow Mapping

3 Cień Cień powstaje w wyniku przesłonięcie źródła światła przez okluder
Miejsce, do którego nie dociera światło Jest naturalny dla człowieka Ważny element naszej wizji człowieka Ułatwia pozycjonowanie obiektów w przestrzeni Ocena odległości obiektu od powierzchni Ocena odległości źródła światła od obiektu Rodzaju materiału, z którego wykonano obiekt Ocena charakterystyki światła

4 Cień Pozycjonowanie obiektu Odległość obiektu od płaszczyzny
Cienie kontaktowe

5 Cień Ocena odległości źródła światła od obiektu

6 Cień Ocena odległości źródła światła od obiektu

7 Cień Ocena materiału z którego wykonano obiekt przesłaniający
Kolorowe szkło, wosk, skóra, mat przeźroczyste

8 Cień Ocena charakterystyki źródła światła
Punktowe, obszarowe (wielkość, stosunek wielkości do obiektów)

9 Cień Umbra – obszar znajdujący się w cieniu całkowitym
Penumbra – obszar znajdujący się w półcieniu Umbra Penumbra

10 Cień

11 Algorytmy Rzutowanie płaszczyzn Śledzenie promieni
Stencil shadows , Shadow Volumes Śledzenie promieni Raytracing Porównywanie głębi Z Shadow mapping

12 Shadow Volumes Potraktujmy cienie jako bryły przestrzenne
Cień jako bryła jest obiektem, w którym nie jest niesione światło dla danego źródła Punkt światła Bryła cienia Trójkąt rzucający cień

13 Shadow Volumes

14 Shadow Volumes

15 Shadow Volumes Generacja Shadow Volume’ów
Zrzutuj promień od światła, przez każdy vertex w nieskończoność Zrzutowane wektory/vertexy utworzą bryłę cienia Interesującą nas częścią okludera jest jedynie jego sylwetka Znajdź sylwetkę z punktu widzenia światła Rozciągnij ją w nieskończoność OD światła W zależności od algorytmu zamknij bryłę (cap)

16 Shadow Volumes Podczas tworzenia shadow volume’a
Prześlij każdą krawędź obiektu jako zdegenerowany quad Znajdź w VS krawędzie (poprzez dot product) Odpowiednie 2 vertex’y przemieść w nieskończoność wzdłuż wektora od światła Pozostałe będą dalej zdegenerowane i zostaną wyrzucone z potoku renderowania Front/Back – cap tworzą front/back face’y przesunięta na odpowiednią odległość (clip plane/far plane/nieskończoność)

17 Shadow Volumes Ogólny algorytm oświetlania z cieniami
Wypełnij Z-buffer sceny Zaznacz miejsca na obrazie w których występuje cień poprzez rasteryzacje shadow volume’ów Użyj stencil buffera Korzystając z gotowej informacji wyrenderuj scenę (np.): Pierwszy pass – ambient light (zapełnia z-buffer, krok 1) Drugi pass – oświetlenie korzystając z informacji o cieniu Ewentualnie światła deferred przycięte volume’ami, bądź odczytujące wartość cienia z textury

18 Shadow Volumes Oświetlone płaszczyzny mają 0 w stencilu Depth Pass
Wyłącz pisanie do Z i koloru Ustaw back-face culling Ustaw stencil na inkrementacje przy depth pass Tylko volume’y przed obiektem Wyrenderuj shadow volume’y Tylko front-face’y brył Ustaw front-face culling Ustaw stencil na dekrementację przy depth pass Tylko back-face’y brył Oświetlone płaszczyzny mają 0 w stencilu

19 Shadow Volumes Depth Pass
Problematyczny jeśli kamera jest wewnątrz bryły cienia Błędny wynik cieniowania W tym wypadku najprostszą metodą jest przełączyć się na Depth Fail

20 Shadow Volumes Oświetlone płaszczyzny mają 0 w stencilu Depth Fail
Wyłącz pisanie do Z i koloru Ustaw front-face culling Ustaw stencil na inkrementacje przy depth fail Tylko volume’y za obiektem Wyrenderuj shadow volume’y Tylko back-face’y brył Ustaw back-face culling Ustaw stencil na dekrementację przy depth fail Tylko front-face’y brył Oświetlone płaszczyzny mają 0 w stencilu

21 Shadow Volumes Wymaga back-cap’owania bryły Depth Fail
Ze względu na rasteryzację uznawany za wolniejszy W zamian za brak problemów wewnątrz bryły Wymaga back-cap’owania bryły Inaczej cień nie zostanie znaleziony tam gdzie punkty bryły odchodzą do nieskończoności

22 Shadow Mapping Shadow mapping Konceptualnie cieniowanie traktujemy jako problem widoczności Punkt znajdujący się w cieniu Światło nie widzi punktu Oko widzi punkt Punkt znajdujący się w świetle Światło widzi punkt

23 Shadow Mapping Metoda w pełni w przestrzeni obrazu
Opiera się na porównawczym teście widoczności Widok światła jest renderowany do textury głębi (shadow map) Scena jest renderowana normalnie z punktu widzenia oka Dla każdego punktu wykonywane jest porównanie głębi punktu w przestrzeni światła między punktem renderowanym (przetransformowanym przez odpowiednią macierz) z punktem zapisanym w shadow mapie Metoda w pełni w przestrzeni obrazu Nie wymaga wiedzy o geometrii sceny

24 Shadow Mapping Opiera się na porównawczym teście widoczności
Widok światła jest renderowany do textury głębi (shadow map) Scena jest renderowana normalnie z punktu widzenia oka Dla każdego punktu wykonywane jest porównanie głębi punktu w przestrzeni światła między punktem renderowanym (przetransformowanym przez odpowiednią macierz) z punktem zapisanym w shadow mapie

25 Shadow Mapping Zalety Nie wymaga stencil buffera
W wielu przypadkach jest szybszy ze względu na rasteryzację oraz mniejszą liczbę operacji transformacji Umożliwia generowanie cieni z alpha-testowanych textur Umożliwia łatwą integrację miękkich cieni (penumbra shadows / soft shadows) Umożliwia tworzenie cieni transparentnych Ma uzasadnienie praktyczno wydajnościowe w scenach otwartych (oświetlenie słoneczne) Umożliwia łatwą integrację z projekcją textur

26 Shadow Mapping Wady Mniej dokładna od Shadow Volume’ów
Metoda rasteryzacji zamiast operacji geometrycznej Problem z aliasingiem ze względu na dyskretyzację shadow mapy Rozdzielczość Zajętość pamięci shadow mapą dla każdego światła Problem renderowania świateł o dużych kątach oświetlania Point light = kilka shadow map

27 Shadow Mapping Wady Mniej dokładna od Shadow Volume’ów
Metoda rasteryzacji zamiast operacji geometrycznej Problem z aliasingiem ze względu na dyskretyzację shadow mapy Rozdzielczość Zajętość pamięci shadow mapą dla każdego światła Problem renderowania świateł o dużych kątach oświetlania Point light = kilka shadow map

28 Shadow Mapping Wyrenderuj do textury z-buffer z punktu widzenia światła Shadow mapa używana później Zawiera rodzaj 2D funkcji oznaczającej odległość najbliższych do światła punktów W podstawowej wersji odległość Z Wyrenderuj scenę z punktu widzenia oka Dla każdego pixela Zdefiniuj pozycję XYZ pixela w przestrzeni światła Powinna się zgadzać z parametrami wg. Jakich została stworzona shadow mapa Dokonaj testu porównawczego

29 Shadow Mapping Test porównawczy Dwie wartości
A = wartość Z z shadow mapy (z punktu XY pixela w przestrzeni światła) B = wartość Z punktu XYZ pixela w przestrzeni światła Jeśli B > A to znaczy, że istnieje punkt obiektu będącego bliżej światła niż cieniowany pixel Pixel jest w cieniu Jeśli A ~~ B to znaczy, że pixel jest oświetlony

30 Shadow Mapping B > A depth map image plane depth map Z = A
light source eye position eye view image plane, a.k.a. the frame buffer fragment’s light Z = B

31 Shadow Mapping B ~A depth map image plane depth map Z = A light source
eye position eye view image plane, a.k.a. the frame buffer fragment’s light Z = B

32 Shadow Mapping Precyzja shadow mapy może się różnić od precyzji bufora, do którego generujemy cień Dochodzi do pomyłek w szacowaniu Artefaktów Widocznego aliasingu Pixelozy na krawędzi cienia

33 Shadow Mapping Copyright by nvidia

34 Shadow Mapping

35 Shadow Mapping

36 Shadow Mapping Shadow bias Problem wynikły z dyskretyzacji
Błędne samo-cieniowanie płaszczyzn Objawia się tzw. Shadow ackne tworząc efekt Moire’a Zapisywaną głębie do shadow mapy należy przesunąć o ‘małą’ wartość Na tyle dużą by uniknąć błedów Na tyle małą, żeby cień nie odszedł za daleko od obiektu Można dobrać ręcznie Istnieją algorytmy, które dobierają ją optymalnie w czasie rzeczywistym względem danego pixela

37 Shadow Mapping Bias Bias

38 Shadow Mapping

39 Shadow Mapping Shadow mapa
Musi być generowana z każdą zmiana światła Musi być generowana z każda zmianą obiektów rzucających cień W zależności od algorytmu może być niezależna od ruchu oka Problem doboru projekcji przy konstrukcji macierzy światła Problem doboru shadow casterów oraz frustum Problem undersamplingu Problem filtrowania

40 Shadow Mapping Problem doboru projekcji przy konstrukcji macierzy światła Dla świateł punktowych bądź typu spot używamy projekcji perspektywicznej szerokiej wg kąta oświetlenia światła Efektywnie do 90* Dla świateł szerszych można rozważyć projekcje Point light = 6 * projekcja 90 = cubemap Ewentualnie możliwe projekcje wrap : sphere mapping, paraboloid mapping Dla świateł kierunkowych (słońce) używamy zaawansowanych projekcji Ortogonalna Projekcje wrapujące ze względu na zwiększenie jakości

41 Shadow Mapping Dobór obiektów
Obiekty, które będą wyrenderowane do shadow mapy Są oznaczone jako shadow casting Np. ze względu na wielkość (automatycznie odrzucamy zbyt małe obiekty których wielkość na shadow mapie będzie mniejsza niż n pixeli – w szczególności <1) Znajdują się w light frustum wyznaczonym Przez macierz światła Przyciętym na far przez frustum oka Przyciętym na near na pierwszy shadow castujący obiekt

42 Shadow Mapping Wyznaczenie near plane
W zależności od sytuacji możemy wybrać near plane tuż przy świetle Może mieć dramatyczny efekt w skomplikowanych scenach Np. teren podczas gdy słońce jest nisko Możemy odrzucać obiekty po funkcji wielkości bounding boxów oraz kąta padania światła Specyficzne sytuacje Możemy zrzutować wierzchołki bounding boxów wg macierzy światła i sprawdzić przecięcie z view frustrum Jęsli przecięcia nie będzie, oznacza to, że mamy pewność nie zobaczenia cieni przez oko

43 Shadow Mapping Problem undersamplingu
Występuje gdy w wyniku różnic perspektywy bądź projekcji wielkość potencjalnego pixela shadow mapy jest mniejsza niż pixela płaszczyzny na która generujemy cień d > di ds * rs / ri – perspektywa cosb/cosa - projekcja

44 Shadow Mapping Undersmapling rozwiązywany
Zwiększanie rozdzielczości shadow mapy Mało wydajne na pixel (duże marnotrawstwo) Zmiany projekcji wymuszające większą rozdzielczość w bardziej potrzebnych miejscach Trapezoidal mapping Perspective mapping Podział frustrum oka na części obsługiwane przez różne shadow mapy o różnej charakterystyce (dalsze mniejsza rozdzielczość) Podział frustrum światła wg podziału frustrum oka Podział ze względu na optymalizacje rozdzielczości analitycznej shadow mapy Parametryzowalne przez ilosc podzialow jak I rozdzielczosc poszczegolnych shadow map

45 Shadow Mapping

46 Shadow Mapping Problem filtrowania
Shadow mapa nie może być filtrowana standardowo tak jak zwykłe tekstury Da to błędny wynik Ze względu na dyskretyzacje filtrowanie jest potrzebne Wykonuje się je przy użyciu filtra PCF Ręcznie Sprzętowo dla obszaru 2x2 pixele Ręcznie dla tworzenia miękkich cieni oraz penumbra shadows

47 Shadow Mapping

48 Shadow Mapping

49 Shadow Mapping

50 Shadow Mapping Problem filtrowania
Shadow mapping wykonujemy przy użyciu kilku sampli z shadow mapy Najpierw wyliczamy potem filtrujemy Wsparcie sprzętowe tex2Dproj, fetch4 itp. Zależne od sprzętu Filtrowanie poprawia wygląd, błędy aliasingu //Projected coords projCoords = oTex1.xy / oTex1.w; //Sample nearest 2x2 quad shadowMapVals.r = tex2D(ShadowSampler, projCoords ); shadowMapVals.g = tex2D(ShadowSampler, projCoords + texelOffsets[1].xy * g_vFullTexelOffset.xy ); shadowMapVals.b = tex2D(ShadowSampler, projCoords + texelOffsets[2].xy * g_vFullTexelOffset.xy ); shadowMapVals.a = tex2D(ShadowSampler, projCoords + texelOffsets[3].xy * g_vFullTexelOffset.xy ); //Evaluate shadowmap test on quad of shadow map texels inLight = ( dist < shadowMapVals); //Percent in light percentInLight = dot(inLight, float4(0.25, 0.25, 0.25, 0.25) );

51 Shadow Mapping Problem filtrowania
Poszukiwanie innych funkcji zapisu odległości, umożliwiających przefiltrowanie przed operacją porównywania Zastąpienie prostej funkcji zapisu głębi i porównania na funkcję separowalną i liniową ze względu na operacje filtrowania Niektóre sprawdzone rozwiązania VSM – Variance Shadow Mapping – bazują na zapisie wariancji i koowariancji, które podlegają filtrowaniu ESM – Exponential Shadow Maps – bazują na szeregach funkcji exponencialnych, podległych filtrowaniu

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

53 Questions ?


Pobierz ppt "Michał Drobot Technical Art Director Reality Pump"

Podobne prezentacje


Reklamy Google