[ Reljam @ 21.10.2003. 08:14 ] @
Da bi malo pokrenuo diskusiju na forumu, napravio sam jedan mali primer. Radi se o high dynamic range osvetljenju, znaci specijalnim efektima vezanim za zasicenje prilikom velikog osvetljenja. Da ne bih suvise objasnjavao, evo par slika - mada ovo izgleda mnogo bolje uzivo. Za pocetak, najobicniji cajnik, sa obicnim diffuse + specular osvetljenjem. Intenzitet stvetla je 1.0: ![]() http://reljam.no-ip.com/files/teapotA.jpg Medjutim, sta se desava ako pojacamo to svetlo? Sa standardnim modelom osvetljenja, rezultat bi bio samo malo vise belih trouglova. Medjutim, ovako dobijamo sledece (ovo je sa intenzitetom od 2.13): ![]() http://reljam.no-ip.com/files/teapotB.jpg Ovde ima jos jedan efekat, a to je afterimage koji se desava kada se vrlo jako svetlo "uprzi" na kameru. Ovaj screen shot ne izgleda toliko impresivno ovde, ali zato je afterimage efekat mnogo ocigledniji kada se startuje program. Da bih lakse uhvatio afterimage u jednom staticnom kadru, podigao sam inteniztet svetla na 3.65, sto je prilicno velika vrednost: ![]() http://reljam.no-ip.com/files/teapotC.jpg Ideja je u startu bila da se napise modul koji bi bio sto jednostavniji za koriscenje. Evo kako mozete da ugradite ovaj efekat u vas postojaci program: Code: ... u render loopu ... Bloom.PreRender(); // Ovde iscrtate sve sto bi ste inace iscrtali Bloom.PostRender(); // i to je to! Ovaj kod zahteva hardver koji podrzava PS 2.0 - to je trenutno ATI 9000 serija i GeForce FX. Ja sam ovo probao na mom Radeonu 9700, i radi kako treba, ali nazalost nemam FX pri ruci. Ako neko ima, bilo bi lepo da proba i da mi kaze da li radi. Nemam vremena da veceras zakacim exe, ali cu zato to uraditi sutra, i to sa kompletnim sorsom. |