2d skuggor

Work in progress..

2d skuggor

Postby Daniel.Månsson on Sun Jul 06, 2008 2:18 am

Sitter nu här och småjobbar lite med min 2d-renderare. En viktig del i den kommer vara skuggor och ljus.

Som vanligt fick jag för mig att arbeta på nåt annat än renderaren, så jag slängde ihop ett litet testprogram för att se hur tung min tänkta skuggteknik kommer att vara.

Resultatet blev ett skojsigt litet program som ritar ut linjerna man kommer sampla djupvärden ifrån senare. Med tankte på att allt körs på CPUn i det här programmet och att funktionen jag skrev är långt från optimal, så kommer nog inte prestandan bli något större problem när jag implementerar samma teknik i shaders. Det är nice för det betyder att man kan ösa asmånga ljuskällor. :D

Image

linjer.rar

Ska bli nice att se hur det här blir i shaders sen. :D
Last edited by Daniel.Månsson on Sun Jul 06, 2008 4:03 pm, edited 1 time in total.
Daniel.Månsson
Master Of The Obvious
 
Posts: 66
Joined: Tue Jan 03, 2006 2:05 am
Location: Surbrunnsvägen :]
Nick: Chörw, qazeh

Re: 2d skuggor

Postby Kostas Gialitakis on Sun Jul 06, 2008 7:54 am

Cool, 2D-raytracing. :)
Operation Phoenix, status: Operation successful.
User avatar
Kostas Gialitakis
 
Posts: 961
Joined: Wed Oct 06, 2004 7:35 pm
Location: Malmö

Re: 2d skuggor

Postby Erik.Sjöblom on Mon Aug 18, 2008 7:07 pm

Hmm...sprider sig inte ljus enligt ungefär samma princip som vattenvågor som slår mot en vågbrytare? Så att de sprids åt alla håll även bakom vågbrytaren? Menar att ljusstrålarna som tangerar objekten borde böjas lätt innåt och belysa området även bakom objektet...
Helt osäker på om detta stämmer enligt fysikens lagar, men det känns rätt...
:D
Hush litle baby, don't say a word, or the rest of the village are gonna know that you'r disturbed

"...man får ju prova lite olika så man vet vad man tycker om lixom..." -Alex pratar om coding conventions
User avatar
Erik.Sjöblom
KodApa
 
Posts: 97
Joined: Mon Sep 10, 2007 7:12 pm

Re: 2d skuggor

Postby Mattias Nordin on Mon Aug 18, 2008 8:15 pm

va, hur kan du få den teorin att kännas rätt, ljus är ju små partiklar som fungerar ungefär som ljudvågor(studsar).
Om ljuskällan är större än objektet så är det väl klart den lyser bakom dock.
stay in the shadows, avoid the light
User avatar
Mattias Nordin
UV-Gimp
 
Posts: 311
Joined: Sun Mar 18, 2007 10:49 pm
Location: The Internets
Nick: sp0kelset

Re: 2d skuggor

Postby Daniel.Månsson on Mon Aug 18, 2008 11:11 pm

Erik.Sjöblom wrote:Hmm...sprider sig inte ljus enligt ungefär samma princip som vattenvågor som slår mot en vågbrytare? Så att de sprids åt alla håll även bakom vågbrytaren? Menar att ljusstrålarna som tangerar objekten borde böjas lätt innåt och belysa området även bakom objektet...
Helt osäker på om detta stämmer enligt fysikens lagar, men det känns rätt...
:D

Jag tror att det du skriver stämmer till viss del. Dock så råkar vattenvågor oftast vara aningens större än ljusvågor vilket gör det ganska svårt att se. Diffraktion är nog det du lurar efter. Tyvärr så tror jag inte riktigt att spelvärlden är redo för det ännu. :D

Sen så har jag för mig att ljus böjs av gravition också. Men orka göra en planetsimulator med flera ljusår mellan solarna. ^^

Effekten du tänker på kanske är när man håller ett föremål framför en ljuskälla. T ex när man håller en hand framför en stark lampa. Då kan man se att ytterkanten av handen är upplyst. Antar att det beror på att ljuset fortplantar sig genom huden en viss bit och att där det är tunt lyser den igenom. Att koda nåt sånt känns dock ofantligt jobbigt och datorkraftskrävande, så jag överlämnar den uppgiften till David. ;P Om man inte fuskar lite. Men det gör man ju aldrig. ;)

Annars ger större ljus, de som Mattias nämde, en fluffig kant. Fast då böjs ju egentligen inget ljus, vilket inte är lika spännande. Dock mer genomförbart. ^^
Daniel.Månsson
Master Of The Obvious
 
Posts: 66
Joined: Tue Jan 03, 2006 2:05 am
Location: Surbrunnsvägen :]
Nick: Chörw, qazeh

Re: 2d skuggor

Postby Fredrik Kuylenstierna on Tue Aug 19, 2008 11:00 pm

håller med mattias. ljuset studsar. och det är här ambientljus kommer in.

PS. ja daniel jag håller med dig också men som sagt så är de sakerna inte direkt relevanta i spel.
“Just because nobody complains doesn't mean all parachutes are perfect.” -- Benny Hill
“Quotation is a serviceable substitute for wit.” -- Oscar Wilde (phun intended)
User avatar
Fredrik Kuylenstierna
Evil henchman #3
 
Posts: 260
Joined: Fri Jul 20, 2007 3:15 pm
Location: Asarum
Nick: Xarleth

Re: 2d skuggor

Postby Jacob Alenius on Wed Aug 20, 2008 12:49 pm

Daniel.Månsson wrote:
Erik.Sjöblom wrote:Hmm...sprider sig inte ljus enligt ungefär samma princip som vattenvågor som slår mot en vågbrytare? Så att de sprids åt alla håll även bakom vågbrytaren? Menar att ljusstrålarna som tangerar objekten borde böjas lätt innåt och belysa området även bakom objektet...
Helt osäker på om detta stämmer enligt fysikens lagar, men det känns rätt...
:D

Effekten du tänker på kanske är när man håller ett föremål framför en ljuskälla. T ex när man håller en hand framför en stark lampa. Då kan man se att ytterkanten av handen är upplyst. Antar att det beror på att ljuset fortplantar sig genom huden en viss bit och att där det är tunt lyser den igenom. Att koda nåt sånt känns dock ofantligt jobbigt och datorkraftskrävande, så jag överlämnar den uppgiften till David. ;P Om man inte fuskar lite. Men det gör man ju aldrig. ;)

Subsurface Scattering (SSS). Vore skoj att höra hur svårt det egentligen är från en programmerare. Som jag har fattat det av det lilla jag har läst på ämnet så kan man få till en hyfsad SSS med hjälp av depth maps och sen räkna ut avstånd hit och dit. Har ingen större koll på matten där men jag antar att det finns någon här som sitter på den kunskapen, vore skoj att höra hur jobbigt det är att koda en SSS shader :mrgreen:
User avatar
Jacob Alenius
UV-Gimp
 
Posts: 78
Joined: Mon Apr 07, 2008 10:32 pm
Location: Fridhemsgatan 33
Nick: Eiktyrner

Re: 2d skuggor

Postby Daniel.Månsson on Wed Aug 20, 2008 1:39 pm

Jacob Alenius
wrote:
Subsurface Scattering (SSS). Vore skoj att höra hur svårt det egentligen är från en programmerare. Som jag har fattat det av det lilla jag har läst på ämnet så kan man få till en hyfsad SSS med hjälp av depth maps och sen räkna ut avstånd hit och dit. Har ingen större koll på matten där men jag antar att det finns någon här som sitter på den kunskapen, vore skoj att höra hur jobbigt det är att koda en SSS shader


Jag har själv inte kollat närmare på det. Men jag minns någon gång i höstas då David visade att han hade gjort SSS, tror jag. Eller så var det nåt annat, minns inte riktigt.


Ööh. Bara för sakens skull var jag tvungen att kolla upp tekniken med depth maps och den verkar inte alltför komplicerad. Måste nog ta mig nån månad eller två till att ösa grafikprogrammering, vilket jag inte direkt brytt mig så mycket om innan. :p

Bra kort förklaring:
Wikipedia wrote:...blah blah...
To simulate this effect, a measure of the distance light has traveled through the material must be obtained.
...
One method of estimating this distance is to use depth maps [2] , in a manner similar to shadow mapping. The scene is rendered from the light's point of view into a depth map, so that the distance to the nearest surface is stored. The depth map is then projected onto it using standard projective texture mapping and the scene re-rendered. In this pass, when shading a given point, the distance from the light at the point the ray entered the surface can be obtained by a simple texture lookup. By subtracting this value from the point the ray exited the object we can gather an estimate of the distance the light has traveled through the object.
Subsurface scattering
Daniel.Månsson
Master Of The Obvious
 
Posts: 66
Joined: Tue Jan 03, 2006 2:05 am
Location: Surbrunnsvägen :]
Nick: Chörw, qazeh

Re: 2d skuggor

Postby Alexander.Lilja on Wed Aug 20, 2008 9:43 pm

Kanske är det så att ögat uppfattar lite av det studsande ljuset kring handen?(om man håller handen framför lampan)
Inte att ljuset böjer ser runt handen.. Håller nog med Matte också :D

SSS skulle va grymt o se er proggare tackla!
Ai wa kanari itai
Image
User avatar
Alexander.Lilja
133t-p0st3r
 
Posts: 1234
Joined: Fri Jul 06, 2007 12:14 pm
Location: Karlshamn
Nick: Karera

Re: 2d skuggor

Postby David Simonsson on Wed Aug 20, 2008 10:29 pm

Här är några bilder från en SSS-shader jag gjorde för lite mer än ett år sedan.
Image
Image
Image
David Simonsson
OpenGL
 
Posts: 34
Joined: Tue Apr 17, 2007 10:44 pm

Re: 2d skuggor

Postby Fredrik Kuylenstierna on Thu Aug 21, 2008 3:20 am

Nice. Men borde inte detta vara en ganska prestandadyr sak för ganske lite effekt?

Kan iof tänka mig att det kan göra mycket skillnad i vissa lägen. Vore coolt i ett läge där en skugga faller mot en duk eller liknande och man kan se skuggan från bakom duken. Lite Hitchcock Psycho stämmning liksom.
“Just because nobody complains doesn't mean all parachutes are perfect.” -- Benny Hill
“Quotation is a serviceable substitute for wit.” -- Oscar Wilde (phun intended)
User avatar
Fredrik Kuylenstierna
Evil henchman #3
 
Posts: 260
Joined: Fri Jul 20, 2007 3:15 pm
Location: Asarum
Nick: Xarleth

Re: 2d skuggor

Postby David Simonsson on Thu Aug 21, 2008 2:19 pm

Hur dyrt det är beror helt på vilket sätt man gör det på. Jag gjorde det med depthmaps på det sättet Jacob pratade om, och på det sättet blir det inte så mycket dyrare än att bara ha skuggor, när man ändå har depthmappen. Det blir ju egentligen inte så mycket "scattering" i det på det sättet, men man kan ju ta lite samples i närheten och räkna ut ungefär hur mycket ljus som borde spridas till punkten med hjälp av det, men åtminstånde på huvudet drog det mer på frameraten än vad det såg bättre ut när jag testade det.

Det kanske känns som en ganska liten effekt när man bara ser det på några bilder men skin och växter brukar ofta se väldigt orealistiskt ut utan det.

I NVidia's human head demo räknar dom ut allt ljus som huvudet får på sig i texture space, så att dom får en textur med allt ljus i sig. Den blurrar dom några gånger och för varje gång ändrar dom färgen lite för att den påverkas av vad som finns under huden. Sen lägger dom ihop alla lager och använder det som den slutgiltiga texturen. Jag tror inte dom har med någon back-scattering, så att öronen blir röda när ljuset är bakom till exempel, Men det borde gå att fixa genom att kombinera det med depthmap metoden då dom ändå har shadowmaps. Skinet blir mycket mer naturligt än att bara mäta avståndet ljuset passerat åtminstånde, men det är ganska mycket dyrare också. Möjligt att man kan snabba upp det genom att dra ner texturstorleken.
Länk: http://www.nzone.com/object/nzone_human ... loads.html
David Simonsson
OpenGL
 
Posts: 34
Joined: Tue Apr 17, 2007 10:44 pm


Return to SP: W.I.P.

Who is online

Users browsing this forum: No registered users and 1 guest

cron