[ dragansm @ 10.12.2005. 18:32 ] @
Potrebno je da projektujem senku na ravan recimo y = 0.
Frustum kamere je tako orijentisan da uvek u ravni sece trapez.
Recimo da je svetlo orijentisano normalno na ravan. Tada frustum svetla sece rect u koji je upisan trapez. Taj rect odgovara povrsini teksure shadow mape, i deo teksture koji nije obuhvacen trapezom je neiskoriscen. To je posebno izrazeno kad je kamera mnogo oborena (tada je jako velika razlika paralelnih stranica trapeza). Prva pomisao koja mi je pala na pamet je da frustum svetla treba da ima kao bazu trapez i tada bi bilo 100% iskoriscenje teksture i delovi senke koji su blizu bottom clipping plane frustuma kamere bi bile maksimalno ostre (u slucaju obicnog ortogonalnog ili oblique frustuma svetla, ostrina se povecava kako se ide prema top clipping ravni). Medjutim, previd u tom "razmisljanju" je taj sto preslikavanje trapeza u jedinicni ili bilo kakav kvadrat cije su stranice paralelne sa paralelnim stranicama trapeza ima oblik (recimo da je trapez simetrican u odnosu na z osu i da lezi na x osi):
x' = k1*x*z
z' = k2*z
Forma x*z ne dozvoljava formiranje projekcione matrice sa trapezom kao osnovom.
Da li ima nesto sto nedovoljno kapiram o shadow map tehnici ili resenje moram da potrazim u pisanju vertex shadera koji ne koristi matricno mnozenje nego matematiku kojom cu trapez koji vidi svetlo preslikati u kvadrat pri upisivanju u shadow mapu, i "inverzno" preslikavanje (iz kvadrata u trapez) pri iscrtavanju scene i citanju shadow mape.
Video sam neke tehnike koje ovaj problem resavaju koriscenjem vise shadow mapa, ali nadam se da je moguce dobro resenje i sa jednom.
Problem se, dakle, svodi na pitanje kako naterati da svetlo "vidi" potpuno isti deo scene koji vidi i kamera.

[Ovu poruku je menjao dragansm dana 10.12.2005. u 19:34 GMT+1]
[ bkaradzic @ 10.12.2005. 23:56 ] @
Citat:
Trapezoidal Shadow Maps (TSM) - Recipe

The paper describing the TSM technique has been published in the Eurographics Symposium on Rendering 2004 and
can be found here. Under the same link you can also find videos and the EGSR2004 presentation, some discussion of the comparison of our technique with Perspective Shadow Maps, the Bounding Box Approximation and the Standard Shadow Maps. This page gives specific details to make the implementation of our approach easier. It details the computation of N_T and the maintainance of the polygon offset with fragment programs. In this document we assume you have read the TSM paper and you are able to calculate the four vertices of the trapezoid.

http://www.comp.nus.edu.sg/~tants/tsm/TSM_recipe.html
Citat:
Shadow maps are well known for aliasing artifacts. In particular in large outdoor scenes, close shadows will show severe pixelization artifacts; the shadow map resolution will be too small for nearby objects and too high for distant objects. We solve this perspective aliasing problem by computing the shadow map in post-perspective space.

http://www9.informatik.uni-erl...amminger/Research/Research/psm


[Ovu poruku je menjao bkaradzic dana 11.12.2005. u 04:16 GMT+1]
[ dragansm @ 12.12.2005. 09:24 ] @
Veliko hvala
Sustinski previd je sto nisam posmatrao homogene koordinate.
Karika koja nedostaje je matrica:
|1 0 0 0|
|0 1 0 1|
|0 0 1 0|
|0 1 0 0|
koja transformise trapez u pravougaonik.
Potrebno je jos da nadjem kako formirati oblique trapezoidal frustum, kako bi se max. iskoristio depth range.
[ Filip Strugar @ 12.12.2005. 11:58 ] @
Ja sam se jednom igrao sa trapezoid shadow mapama, bas nakon sto je izasla ta publikacija - i uspeo sam da implementiram sve to otprilike onako kako su napisali, pa sam odustao sa zakjuckom da je trapezoid shadow mapping samo komplikovano poboljsanje (daleko od univerzalnog resenja) jer isto kao i kod PSM zavisi od ugla kamere i svetla.

Nakon toga nazalost nisam imao prilike da se igram sa tim vise pa me bas zanima kako ti ide?

Ako se dobro secam, ovo pricam potpuno napamet jer nemam sad pristup kodu a ni vremena da listam pdf, potrebno je 8 tacaka view frustuma projektovati na ravan svetla pa onda nekim convex polygon creation algoritmom izvuci konveksni poligon pa onda naci trapezoid koji obuhvata taj frustum poligon - mislim da se u pdf-u opisuje otprilike kako to uraditi.

E onda sam imao najveci problem sa time kako napraviti matricu koja nadjene 4 tacke projektuje u uglove (-1,-1; 1,-1; -1,1; 1,1) - to je neko resavanje sistema linearnih jednacina cije sam resenje negde iskopao.

Nakon toga i brda sitnica, kada je to jedva proradilo, rezultati su bili kao i kod perspective shadow mappinga - okej, ali za odredjene uglove kamere-svetla katastrofa. To mi je sve ostalo tako zbrckano negde u prototip stanju jer posle nisam imao vremena.

Sad bih voleo, nekad kad budem imao vremena, da uradim najobicniji shadow mapping ali sa vise near-far shadow nivoa/textura - cini mi se da je to jedino jednostavno a univerzalno resenje?
[ dragansm @ 12.12.2005. 12:32 ] @
Mozda je stvar malo jednostavnija "u mom slucaju" jer kamera uvek ima right vektor paralelan sa ravni projekcije i ogranicen je tilt da top clipping plane uvek sece tu ravan, tako da frustum uvek sece trapez. Kad se taj trapez "extruduje" iz ravni u pravcu koji odredjuje vektor svetla dobije se iskoseni frustum i sa matematickim aparatom datim u tekstovima na koje je uputio bkaradzic ne bi trebalo da bude problem da se formira frustum svetla.
[ Filip Strugar @ 12.12.2005. 14:44 ] @
E pa super onda, sretno, javi kako radi implementacija kad proradi!
U tom slucaju ti i PSM resava problem - ne znam sta je prostije od ta dva?