Page 1 of 1

Hygge Rendering

Posted: 14 Sep 2012, 20:35
by hyy
Hejsa...

Har arbejdet lidt på noget real-tid rendering af lys. Ikke specielt brugbart men meget hyggeligt. Der er ikke blevet tweaket særligt meget endnu, hverken på hastighed eller realisme, men syntes det ser ganske lovende ud. Flammen er den eneste tekstur i scenen, og den er animeret med turbulence baseret på simplex støj udregnet i vertex shaderen. Lys og farver kommer fra real-tid scattering beregninger (an variation over Jensen og Buhler 2002 scattering artiklen). Ideer og kritik modtages meget gerne. Især gerne sjove forslag til hvordan man kan interagere med scenen... Og jaja, ved godt der ikke er så meget spil over det, men jeg gir 5 point og en highscore for at puste lyset ud og poster alligevel i dette forum :)

Image

Links til video´er:

http://dl.dropbox.com/u/3111788/GreenCandle.mpg

http://dl.dropbox.com/u/3111788/BrownCandle.mpg

Re: Hygge Rendering

Posted: 16 Sep 2012, 15:04
by ZeroHero
wow det ser rigtigt godt ud. Er det GLSL, HLSL eller CG?
Kan man evt. faa lov til at se dit shader kode?

Re: Hygge Rendering

Posted: 16 Sep 2012, 15:22
by hyy
Jeg kan desværre ikke lægge koden frem, men shaderen minder om den fra "High Quality Ambient Occlusion" I GPU Gems 3. Shaderen er hlsl med Shader Model 5.0, men kunne også godt ha været DX9 eller glsl for den sags skyld.

Re: Hygge Rendering

Posted: 16 Sep 2012, 15:39
by ZeroHero
Ah mange tak for det. Hvordan fik du flammen til at se saa realistisk ud? Er det partikler?

Re: Hygge Rendering

Posted: 16 Sep 2012, 16:16
by hyy
Flammen er et billede af en lighter flamme lagt på et billboard som er tesseleret rimeligt fint. Verticerne bliver så animeret med lavfrekvent turbulence noise baseret på simplex algoritmen. Det går at den blafre ganske lidt og fint. Der er en Gpu Gems 1 artikel omkring implementering af improved perlin noise. Blending moden er den samme som "Screen" fra photoshop, hvilket svare til src = One og Dest = Inv_Src_Color.

I ovenstående screenshot er flammen faktisk photoshoppet på, men i videoerne er det lavet sådan.

Re: Hygge Rendering

Posted: 16 Sep 2012, 17:34
by ZeroHero
Aha der kan man bare se :)
Det ser super fedt ud og meget realistisk.
Jeg vil ogsaa gerne i gang med det samme :)
Jeg kom i tanker om Blizzards video til Diablo III http://www.youtube.com/watch?v=w_UawjQfXYU
Du kender vel ikke en god begynder artikel omkring translucent shading?
Jeg arbejder dog i GLSL men det goer ikke noget hvis det HLSL eller CG :)

Re: Hygge Rendering

Posted: 17 Sep 2012, 08:00
by hyy
Tak for Diablo sammenligningen, jeg havde helt glemt den video. Deres er formegenligt en prerendered CG film, men stemningen er lidt den samme som den jeg prøver at fange, dog kun med et enkelt lys.

Mht. tutorials så kender jeg ikke så mange. Der er en rimeligt simpel translucency artikel i Gpu Gems 1 hvor effekten er beregnet på baggrund af dybden igennem materialet. Den giver nok ikke helt så gode resultater, men skulle være let at implementere fra bunden af. Derudover bør alle med interesse i emnet læse skin artikel fra Gpu Gems 3 (Husk at Gpu Gems bøgerne er tilgængelige gratis på nettet). Jimenez har en flot screenspace SSS demo på http://www.iryoku.com/separable-sss-released. Og self. den AO artikel fra Gpu Gems 3 jeg nævnte ovenover.

Ellers er det de gode gamle Wann Jensen artikler man bør læse. Det grundlæggende princip er jo rimeligt simpelt, lyset på et givent punkt afhænger af det lys der kommer ind i materialet over hele overfladen. Så en N^2 algoritme er rimeligt simpel at skrive men kan ikke performe særligt godt. Derfor er en hirakisk struktur en god måde at få lidt mere hastighed på. Der er dog stadig meget matematik og finurligheder i de artikler. De er gode, men tager bare lidt tid at læse...