Warsztat » Forum

[Programowanie grafiki] Trapezoidal Shadow Maps

31 wypowiedzi na 2 stronach: 1 2 Jul 29, 2006
Krzych
Jul 29, 2006

Trapezoidal Shadow Maps

Witam
Ostatnio postanowilem pobawic sie cieniami. Najpierw zrobilem jakos zwykly shadow mapping, jednak jakosc nie powalala. Potem przyszedl czas na VSM, jednak jakosc nadal nie byla wspaniala. Odkrylem TSM i wtedy zaczely sie problemy :( Moglby ktos wytlumaczyc jak powinienem postepowac z renderowaniem depth mapy i renderowaniu cienia jezeli mam macierz przeksztalcen trapezoida (N_T z prezentacji o TSM). Albo moze ktos zna jakies szersze artykuly o TSM? Bylbym dozgonnie wdzieczny.
Charibo
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

Side note:

Strzelam, że jeśli jakość Variance Shadowmap ci nie odpowiada, to gdzieś musiałeś walnąć się w implementacji. :)
maxest
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

Cytat:

Potem przyszedl czas na VSM, jednak jakosc nadal nie byla wspaniala

Robiles blur'a shadow mapy? Dopiero wtedy widac porzadne efekty.

A jak chcesz dobrej jakosci shadow mapy to uzyj "techniki" zwanej PSSM, czyli po prostu renderuje obiekty do kilku shadow map (bardzo szczegolowej, mniej szczegolowej, jeszcze mniej szczegolowej, ...) i w zaleznosci od odleglosci obiektu sample'uj odpowiednia shadow map'e. Pod DX10 mozna to zrobic calkowicie sprzetowo (troche to to naciagane bo i tak geometrie wyrenderowac te n razy trzeba, ale przynajmniej nie tracimy czasu na komunikacje CPU-GPU). I w ogole cos takiego to tylko dla swiatla slonecznego. Dla spot'ow starczy zwykla shadow map'ka z jakims PCF'em, a dla point'ow bym sie nie odwazyl uzyc shadow-map :D
Krzych
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

No wlasnie, a jak robic shadow mapy dla swiatel kierunkowych (np. slonca)? Czy pozostaje tylko PSSM czy sa jakies inne techniki?

EDIT: A blura robilem :)
Dab
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

LiSPSM czy TSM to chyba właśnie techniki do outdooru (directionala)?
Charibo
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

PSSM nadadzą się do słońca, a jeśli chcesz być-na-czasie, to możesz obadać Cascade Shadowmaps (o których to nie mam większego pojęcia niż to, że są i że dają dobre efekty). :) Prócz wspomnianego LisPSM masz jeszcze na przykład XPSM i ogólnie wszystko co ma "perspective" w nazwie (chociaż jakość tu może być różna). :)

Natomiast nie zaryzykował bym PSSM do cieni w budynkach albo w wieczornej scenerii, bo są zbyt twarde - tutaj Variance sprawdzą się dużo lepiej. :)
Krzysiek K.
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

Cytat:
Strzelam, że jeśli jakość Variance Shadowmap ci nie odpowiada, to gdzieś musiałeś walnąć się w implementacji. :)

No ja się w swojej nie walnąłem, a jakoś ta jakość mi też nie odpowiada (tzn. wszystko jest fajnie, poza biasem i bleedingiem). :)

Cytat:
Pod DX10 mozna to zrobic calkowicie sprzetowo (troche to to naciagane bo i tak geometrie wyrenderowac te n razy trzeba, ale przynajmniej nie tracimy czasu na komunikacje CPU-GPU).

W geometry shaderze możesz dla każdego trójkąta z osobna wybrać, to której shadowmapy ma polecieć (albo zduplikować i wypchnąć do kilku). ;)

Cytat:
dla point'ow bym sie nie odwazyl uzyc shadow-map :D

To czego byś się dla nich odważył użyć? W końcu pointy (a dokładniej: omnidirectional, bo spotlight też jest pointem) to najczęściej używane i najbardziej wszechstronne światła. Mi tam się shadowmapki do pointów całkiem ładnie w silniku sprawdzają. :)

Cytat:
Natomiast nie zaryzykował bym PSSM do cieni w budynkach albo w wieczornej scenerii, bo są zbyt twarde - tutaj Variance sprawdzą się dużo lepiej. :)

PSSM to chyba tylko technika adresowania shadowmap (podobnie jak wszystkie perspektywiczne). Nikt nie broni połączyć tego z VSM (chociaż wtedy może być trochę kombinacji z zakresami). :)
Charibo
Jul 31, 2006

Odp: Trapezoidal Shadow Maps

Cytat:

Cytat:
Strzelam, że jeśli jakość Variance Shadowmap ci nie odpowiada, to gdzieś musiałeś walnąć się w implementacji. :)

No ja się w swojej nie walnąłem, a jakoś ta jakość mi też nie odpowiada (tzn. wszystko jest fajnie, poza biasem i bleedingiem). :)
Ano, między innymi po to wymyślono rozszerzenia tej techniki - w tym PAVSM - czyli właśnie to co mówiłeś o łączeniu pssm z vsm, ale też SAVSM (Summed-area) i pare innych myków (opisane to jest gdzieś w papierze od NVIDIA) które pozwalają uniknąć tych dwóch niedogodnośći. :)

Chociaż, imo, i tak lepsze są troszkę "cieknące" ale miękkie cienie niż twarde. :)
maxest
Jul 31, 2006

Odp: Trapezoidal Shadow Maps

Cytat:

To czego byś się dla nich odważył użyć? W końcu pointy (a dokładniej: omnidirectional, bo spotlight też jest pointem) to najczęściej używane i najbardziej wszechstronne światła. Mi tam się shadowmapki do pointów całkiem ładnie w silniku sprawdzają. Smiley

Wszystko zalezy od scenerii. Ale jesli mamy do czynienia z indoor'ami do dla point-light'ow uzylbym shadow volume'ow. W Doom'ie, Quake'u, czy F.E.A.R. dawaly elegancko rade. I nie maja tyle artefaktow co shadow mapy :). Ale to jeszcze raz podkresle: wszystko zalezy od scenerii.

Cytat:

LiSPSM czy TSM to chyba właśnie techniki do outdooru (directionala)?

Nie tylko, mozesz ich uzyc rowniez do point/spot light'ow. Problem w tym ze te techniki maja tyle "specjalnych" przypadkow ze w wiekszosci bedziesz mial wiecej problemow niz ze zwyklymi shadow map'ami :P (jakos rowniez bedzie porownywalna). Ale jak ustawisz w odpowiedniej pozycji sloneczko i nie bedziesz nim ruszal to TSM daje rade (a przynajmniej ladnie dawal w np. Call of Juarez). Chociaz w takim wypadku to juz nie wiem czy nie wolalbym wypalic cieni na lightmap'ach (no i mala shadow mapka dla pobliskich dynamicznych obiektow).

Sam gdybym mial robic swiatelko sloneczne to uzylbym PSSM z, powiedzmy, trzema split'ami + jakas metode rozmycia. I tutaj albo VSM albo screen-space blur uwzgledniajacy ciaglosci obiektow. I mowie tutaj o srodowisku takim, w ktorym zmienia sie polozenie slonca. Bo jesli slonce jest statyczne to najlepiej imho wypalic lightmapki a cienie tylko dla pobliskich obiektow dynamicznych na jednym "split'cie" (no i moze ten TSM; we wspomnianym CoD'zie naprawde niezle to wygladalo)
Krzysiek K.
Jul 30, 2006

Odp: Trapezoidal Shadow Maps

Cytat:
Wszystko zalezy od scenerii. Ale jesli mamy do czynienia z indoor'ami do dla point-light'ow uzylbym shadow volume'ow. W Doom'ie, Quake'u, czy F.E.A.R. dawaly elegancko rade. I nie maja tyle artefaktow co shadow mapy :). Ale to jeszcze raz podkresle: wszystko zalezy od scenerii.

Wydajnościowo to tak nie bardzo SV daje radę w porównaniu z shadowmapami, zwłaszcza przy dużych rozdzielczościach, a nie widzę problemu ze zrobieniem shadowmap dla świateł punktowych. Może i czasem są artefakty, ale są mało zauważalne (w VSM głównie denerwuje bleeding, ale da się go usunąć), a za to masz dosyć szybko działające miękkie cienie. :)
maxest
Aug 8, 2006

Odp: Trapezoidal Shadow Maps

Cytat:

a za to masz dosyć szybko działające miękkie cienie. Smiley

Renderujac 5 razy scene dla tego swiatelka? :P
W GPU Gems 1 jest artykul o cieniach na shadow map'ach dla point light'ow. Przy rozdzialce shadow mapy 1024x1024 (i bardzo dobrej jakosci) na GF8400 przycina. Ja rozumiem, ze to zdecydowanie za duza rozdzielczosc, ale im mniejsza tym gorsze cienie :P. Nie wiem, pewnie kiedys potestuje scenariusz z shadow map'ami i shadow volume'ami, ale poki co to co widzialem we wspomnianych grach zdecydowanie mnie zadowalalo (a i bardzo dobrze dzialalo, jak chocby F.E.A.R. ktory na wysokiej grafice pociagnie spokojnie na GF8400 z dynamicznym oswietleniem i shadow volume'ami)
Dab
Aug 8, 2006

Odp: Trapezoidal Shadow Maps

Cytat:
F.E.A.R. ktory na wysokiej grafice pociagnie spokojnie na GF8400 z dynamicznym oswietleniem i shadow volume'ami


Chyba w 320x240 ;)

SV rzeczywiście wydają się lepsze do pointów, ale niestety "wydają się" - SV potrzebują mnóstwo fillrate. W Doom 3 w którego sobie gram ostatnio na przykład FPSy spadają kwadratowo wraz ze wzrostem rozdzielczości. Bo PS ma tylko "trochę" więcej pikseli do pokolorowania, ale SV swoje ciągną.
maxest
Aug 8, 2006

Odp: Trapezoidal Shadow Maps

Cytat:

Chyba w 320x240 Wink

800x600x32.

SV da sie elegancko zoptymalizowac. Eric Lengyel sporo na ten temat napisal i naprawde sporo mozna zyskac dla swiatel bedacych w sredniej i dalszej odleglosci od kamery (oczywiscie, jesli kamera jest blisko zrodla to za wiele nie da sie zrobic :)).
Poza tym jakie obiekty rzucaja SV? Jakies skrzynki, stoliczki, krzeselka no i sciany. Nie musi to byc duzo geometrii (zwlaszcza, ze mozemy sobie uzyc SV dla niskiego LODa siatki).
Ja dalej bede bronil stanowsika ze SV to bardzo dobra technika i, w zaleznosci od okolicznosci, potrafi przewyzszyc SM :)
Krzysiek K.
Aug 14, 2006

Odp: Trapezoidal Shadow Maps

Cytat:
Renderujac 5 razy scene dla tego swiatelka? :P

Dokładnie to sześć, ale w czym problem? Dzisiejsze karty graficzne potrafię sobie ładnie z tym poradzić. Poza tym w DX10 masz możliwość wybrania jednego z 16 viewportów w geometry shaderze, więc używając wirtualnych cube map możesz jednym renderowaniem załatwić jednocześnie 16 ścianek dla różnych świateł. Poza tym nikt nie każe Ci renderować tego co klatkę - w moim silniku na przykład mocno wykorzystuję shadowmapy z poprzedniej klatki i aktualizuję tylko te fragmenty ścianek, które potencjalnie mogły się zmienić (tj. w tym miejscu jest aktualnie obiekt dynamiczny, lub był tam w poprzedniej klatce). Efekt: całość śmiga 2x szybciej, a da się jeszcze trochę tutaj zoptymalizować. :)

Cytat:
Przy rozdzialce shadow mapy 1024x1024 (i bardzo dobrej jakosci) na GF8400 przycina. Ja rozumiem, ze to zdecydowanie za duza rozdzielczosc, ale im mniejsza tym gorsze cienie :P.

W moim silniku cubemapy o krawędzi 256 + blur 4x4 + VSM sprawdziły się bardzo ładnie. :)

Cytat:
Poza tym jakie obiekty rzucaja SV? Jakies skrzynki, stoliczki, krzeselka no i sciany. Nie musi to byc duzo geometrii (zwlaszcza, ze mozemy sobie uzyc SV dla niskiego LODa siatki).

Nie ma znaczenia ile to jest geometrii, ale jaką powierzchnię ekranu zajmie shadow volume. Przykładowo, mamy na scenie latarnię po prawej stronie ulicy i prostopadle do ekranu z prawej strony dosyć nisko świeci słonko - latarnia rzuca taki shadowvolume, że marnuje prawie dwa pełne ekrany fillrate'u (na przednie i tylne ścianki). Jeśli mamy na ulicy więcej takich latarni, to zaczyna się robić masakra. :)

Nie bez przyczyny mało która gra dzisiaj wykorzystuje shadow volume (właściwie to czy jakakolwiek z ostatniego czasu to robi?), bo shadow mapy skalują się znacznie ładniej i można dosyć prosto otrzymać miękkie cienie. :)
maxest
Aug 12, 2006

Odp: Trapezoidal Shadow Maps

Cytat:

Dokładnie to sześć

Pominalem juz przebieg zwiazany z renderowaniem tego co "widzi gora" - zalozylem, ze mamy do czynienia ze swiatelkami umiejscowionymi pod sufitem :)

Cytat:

W moim silniku cubemapy o krawędzi 256 + blur 4x4 + VSM sprawdziły się bardzo ładnie. Smiley

Z light-bleeding'iem? Bleee... :P. A kazda proba usuniecia tego artefaktu oznacza dluzszy pixel shader

Cytat:

Przykładowo, mamy na scenie latarnię po prawej stronie ulicy i prostopadle do ekranu z prawej strony dosyć nisko świeci słonko - latarnia rzuca taki shadowvolume, że marnuje prawie dwa pełne ekrany fillrate'u

Zly scenariusz - dla sloneczka w 99% przypadkow nie odwazylbym sie uzyc shadow volume'a :). Za to jesli np. latarnie maja swiecic i powodowac rzucanie cieni to najpewniej czesc latarni bedzie na tyle odlegla od kamery, ze scissor test i z-bounds (przeklete ATI) spokojnie moga zalatwic sprawie z nadmiernym fill-rate'em.

Cytat:

shadow mapy skalują się znacznie ładniej i można dosyć prosto otrzymać miękkie cienie. Smiley

Za to jakosc tej "miekkosci" pozostawia jeszcze wiele do zyczenia. http://americasarmy.pl/zdjecia/recenzje/cod4mw/shot0018mu7.jpg - gdyby tutaj zaczac "ruszac" sloncem, to mielibysmy takie "falowanie" cienia, ze nawet gracza-amatora by to denerwowalo :P
Krzysiek K.
Aug 14, 2006

Odp: Trapezoidal Shadow Maps

Cytat:
Z light-bleeding'iem? Bleee... :P. A kazda proba usuniecia tego artefaktu oznacza dluzszy pixel shader

Bleeding elegancko można usunąć jedną instrukcją, więc karta nawet tego nie poczuje (inna kwestia, że VSM i tak sam z siebie jest tańszy niż większość innych metod). Jedyna wada takiego rozwiązania to to, że nieco zmniejsza nam ono zakres miękkości cienia, ale i tak efekt jest fajny. :)

Cytat:
Za to jesli np. latarnie maja swiecic i powodowac rzucanie cieni to najpewniej czesc latarni bedzie na tyle odlegla od kamery, ze scissor test i z-bounds (przeklete ATI) spokojnie moga zalatwic sprawie z nadmiernym fill-rate'em.

Co ATI ma poradzić, skoro z-bounda opatentowała NVidia?

Cytat:
Za to jakosc tej "miekkosci" pozostawia jeszcze wiele do zyczenia. http://americasarmy.pl/zdjecia/recenzje/cod4mw/shot0018mu7.jpg - gdyby tutaj zaczac "ruszac" sloncem, to mielibysmy takie "falowanie" cienia, ze nawet gracza-amatora by to denerwowalo :P

To że w jednej grze niezbyt się im udało, to nie znaczy że tak być musi. :)

Aby odpowiedzieć w temacie "[Programowanie grafiki] Trapezoidal Shadow Maps" musisz się najpierw zalogować/zarejestrować

Strony: 1 2