[ glorius @ 28.02.2010. 18:10 ] @
Moj prvi Soft Shadow demo! :)))) Ideju sam preuzeo sa sledeceg linka: http://www.gamedev.net/reference/articles/article2193.asp Cilj demo-a je bio da detaljno razumem kako radi jedan od nacina generisanja senki. Nacin generisanja senki: 1. Renderovanje scene iz perspektive svetla u Depth buffer render target ( DepthRT ) 2. Renderovanje scene iz perspektive kamere pri kojem se odredjuje koji pixel je u senci koristeci podatke iz Depth buffer render target i smestanje vrednosti rezultata ovog testa (crna ili bela boja) u poseban render target ( ShadowMapRT ) ciji sadrzaj izgleda ovako. 3. Blurovanje ShadowMapRT pomocu vertikalnog i horizontalnog Gaussian blura dva puta ( BlurRT ) tako da se dobija iluzija mekane senke. Primer. 4. Na kraju se renderuje scena sa osvetljenjem. Iz BlurRT se uzimaju vrednosti (ShadowTerms) tako sto se u Light shaderu proracunaju screen space texture koordinate i izvrsi se lookup BlurRT texture. Na kraju se konacna boja ( diffuse + specular ) mnozi ShadowTerm-om. Blur shader je dosta zahtevan, koliko mi se cini, pa bi u buducnosti mogao da probam sa blurovanjem downsamplovane verzije ShadowMap-e zbog Frame Rate-a mada nisam siguran kakav ce kvalitet senki biti. Soft Shadows 1 Ovde sam dodao malo ambient osvetljenja senkama tako da izgledaju realnije ( nisu skroz crne ) Soft Shadows 2 Soft Shadows 3 U primerima je velicina Shadow Mape 512x512. Mogao sam da izaberem 1024x1024 ( bolje izgleda ) ali vizeulno i 512x512 zadovoljava. Sledeci korak je dodavanje vise svetala koja bacaju senke. Ideja je da se renderuje u vise ShadowMap Render Targeta i da se vrednosti pixela iz tih RT-a mnoze tako da se dobije jedna ShadowMapa na kojoj su siluete senki svih svetala. Za sledeci demo cu uraditi bolju scenu u MAX-u :) |