Michał Drobot Technical Art Director Reality Pump

Slides:



Advertisements
Podobne prezentacje
Modele oświetlenia Punktowe źródła światła Inne
Advertisements

Standardowa biblioteka języka C++
Krzysztof Skabek, Przemysław Kowalski
Podstawy grafiki komputerowej
Cyfrowy model powierzchni terenu
POSTĘP TECHNICZNY W PRACY BIUROWEJ
SCR 2008/2009 – informatyka rok 5. Agenda Wizualizacja agentów (MarketSpace)
Telewizja trójwymiarowa - wyzwania
Przekształcenia afiniczne
Pracownia Gier w OpenGL
Grafika komputerowa Wykład 8 Wstęp do wizualizacji 3D
Rozpoznawanie Twarzy i Systemy Biometryczne, 2005/2006
Rozpoznawanie Twarzy i Systemy Biometryczne, 2005/2006
Animacja Animacja jest procesem automatycznego generowania serii obrazów, gdy kolejny obraz przedstawia pewną zmianę w stosunku do poprzedniego. Ta definicja.
Rzutowanie 3D  2D Rzutowanie planarne Rzut równoległe
Eliminacja powierzchni niewidocznych Wyznaczanie powierzchni widocznych Które powierzchnie, krawędzie i punkty są widoczne ze środka rzutowania (albo wzdłuż.
Paweł Kramarski Seminarium Dyplomowe Magisterskie 2
Renderowanie oceanu Źródło: „Procedural Ocean Effects” László Szécsi Khashayar Arman Budapest University of Technology.
Geometria obrazu Wykład 11
Geometria obrazu Wykład 13
Geometria obrazu Wykład 11
Mind Mapping (mapa myśli) – nowy wymiar sporządzania notatek
Program wywoływany jest z przycisku wskazanego strzałką.
REKLAMY WYŻSZEJ UCZELNI Z WYKORZYSTANIEM ANIMACJI KOMPUTEROWEJ
Przegląd ważniejszych bibliotek używanych przy projekcie Quall.
Dzisiaj powtarzamy umiejętności związane z tematem-
Zbiór do posortowania mieści się w pamięci
Grafika komputerowa Wykład 11 Analiza widoczności
Detekcja twarzy w obrazach cyfrowych
Karty graficzne Karta graficzna, często określana też mianem akcelerator grafiki, to element komputera tworzący sygnał dla monitora. Podstawowym zadaniem.
Programowanie gier komputerowych Tomasz Martyn
AECHITEKTURA OBIEKTÓW TECHNICZNYCH
Advanced Soft Shadows Michał Drobot Technical Art Director Reality Pump.
Light pre-pass renderer
Zaawansowane techniki renderingu
ZASTOSOWANIE RENDERINGU W GRAFICE KOMPUTEROWEJ
Wzorce slajdów, animacje, różne orientacje slajdów
Źródła błędów w obliczeniach numerycznych
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Wojciech Toman. Dotychczasowe podejście do oświetlenia Idea deferred shadingu Typowe problemy wraz z propozycjami rozwiązania Optymalizacja wydajności.
Spheroidator coded by Adam Piechna
VI EKSPLORACJA DANYCH Zadania eksploracji danych: klasyfikacja
Ekonometria stosowana
Regresja wieloraka.
Seminarium licencjackie Beata Kapuścińska
Perspektywa.
Grafika i komunikacja człowieka z komputerem
Informatyka +.
Grafika i komunikacja człowieka z komputerem
Grafika i komunikacja człowieka z komputerem
Teksturowanie oraz algorytmy cieniowania
Geometria obrazu Wykład 6
Formatowanie dokumentów
Teksturowanie w grafice komputerowej
Seminarium IITiS PAN, marzec 2004 Komputerowa analiza i integracja informacji wizyjnej o scenach 3D. Prace statutowe Zespołu Komputerowych Systemów Wizyjnych.
Grafika komputerowa Dr inż. Piotr Gronek
WYKŁAD 11 ZJAWISKA DYFRAKCJI I INTERFERENCJI ŚWIATŁA; SPÓJNOŚĆ
Grafika rastrowa - parametry
Podsumowanie omówionych zagadnień
Przetwarzanie obrazów
Przetwarzanie obrazów
Microsoft® Office Word
Draver/GRK/cw3_result.jpg. Grafika 3D Wprowadzenie.
Grafika 2d - Podstawy. Kontakt Daniel Sadowski FTP: draver/GRK - wyklady.
Treść dzisiejszego wykładu l Szeregi stacjonarne, l Zintegrowanie szeregu, l Kointegracja szeregów.
Grafika komputerowa Dr inż. Michał Kruk. Reakcja ś wiat ł a z materi ą : – Odbicie ś wiat ł a – Przenikanie ś wiat ł a Zale ż ne od w ł a ś ciwo ś ci.
Rzutowania Rzutowanie jest przekształceniem przestrzeni trójwymiarowej na przestrzeń dwuwymiarową. Rzutowanie polega na poprowadzeniu prostej przez dany.
Tensor naprężeń Cauchyego
Tensor naprężeń Cauchyego
Zapis prezentacji:

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

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

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

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

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

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

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

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

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

Cień

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

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ń

Shadow Volumes

Shadow Volumes

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)

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ść)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Shadow Mapping Copyright by nvidia

Shadow Mapping

Shadow Mapping

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

Shadow Mapping Bias Bias

Shadow Mapping

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

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

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

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

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

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

Shadow Mapping

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

Shadow Mapping

Shadow Mapping

Shadow Mapping

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) );

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

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

Questions ?