Directe belichting in ray tracing Eindverhandeling van Alex Vanden Abeele Promotor: Prof. Dr. ir. Philip Dutré Begeleider: ir. Olivier Dumont
Inhoud Situering Local Illumination Environments Resultaten en conclusie
Beeldsynthese via ray tracing Scène met objecten, lichtbronnen en een camera. Stralen vanuit de camera snijden met objecten in de scène Bepaal kleur gegeven de lichtinval lichtbron camera scene scherm
Directe belichting in ray tracing Beschouw enkel het licht dat rechtsreeks van de bron komt. Vraag Ligt een punt in de schaduw van een punt op een lichtbron? Het “beantwoorden” van deze vraag is het grootste knelpunt in standaard ray tracing. Schaduw?
Directe belichting in termen van de RE De rendering vergelijking voor het evalueren van de directe belichting*: V(x,y) is de visibiliteitsfunctie. x = snijpunt in de scene y = punt op de lichtbron resultaat is 0 wanneer x voor y in de schaduw ligt, anders 1. Probleemstelling: het evalueren van deze term. y x * bron: Global Illumination Compendium
Mogelijke methoden voor V(x,y) Standaard RT: Controleer alle objecten in de scene op intersectie. Spatial subdivision: Octree, K-D tree,… Enkel een deel van de objecten worden gecontroleerd. Shaft culling Enkel objecten binnen een “schacht” tussen het snijpunt en de lichtbron worden beschouwd. Local Illumination Environments…
Inhoud Situering Local Illumination Environments Resultaten en conclusie
Local Illumination Environments* Een octree wordt gecreëerd voor de scène Bij het bemonsteren van de lichtbron worden blokkers die men tegenkomt bijgehouden in de cel. De constructie van de structuur gebeurt afhankelijk van de positie van de camera. * S. Fernandez, K. Bala, D. P. Greenberg
Preprocessed Local Illumination Environments Die structuur wordt in deze verhandeling aangepast: Per zijde van elke cel (6 zijden) Per zichtbare lichtbron Bepaal blokkers tussen lichtbron en de zijde Bepaal umbra-regio op de zijde Bepaal penumbra-regio op de zijde
Preprocessed Local Illumination Environments De constructie van de structuur gebeurt vóór het renderen en bijgevolg onafhankelijk van de positie van de camera. Voordelen Alle blokkers in een cel zijn gekend op voorhand. Men kan op intersectie testen met de umbra-regio. Men kan op intersectie testen met de penumbra-regio. Onafhankelijk van de camera.
Algoritme voor het evalueren van V(x,y) Bepaal door welk zijde van de cel de straal gaat Geen data = punt in schaduw Controleer op intersectie met umbra regio Intersectie = punt in schaduw Controleer op intersectie met penumbra regio Geen intersectie = punt in licht Controleer op intersectie met de blockers Controleer op intersectie met eigen objecten Anders: punt in licht
Constructie - octree Scène Octree
Constructie – detectie blokker Voor elk zijde Voor elke lichtbron Clip blokkers tegen schacht Schacht Blokkers voor een cel
Constructie - umbra en penumbra Voor elke gevonden geclipte blokker bepaal umbra regio op bijhorend vlak bepaal penumbra regio op bijhorend vlak Umbra voor een cel Bepaling dmv projectie en intersectie van de projectie Penumbra voor een cel
Constructie - optimalisatie: verwijderen Wanneer een zijde van een cel volledig in de umbra regio ligt Verwijder bijhorend gegevensobject Geen data = volledig in schaduw of niet belicht Dit vermijdt onnodige intersectie testen. Dus versnelt het renderen
Constructie - optimalisatie: verfijnen Wanneer een cel deels in een umbra regio valt Splits deze cel verder op In enkele deelcellen kunnen de gevensobjecten verwijderd worden. Wat opnieuw het renderen versnelt
Constructie - optimalisatie: propagatie Als een cel volledig in een umbra regio ligt Dan ook bepaalde buren Deze informatie wordt doorgegeven En moet in de buur niet meer berekend worden Dit versnelt de constructie
Inhoud Situering Local Illumination Environments Resultaten en conclusie
Enkel de tijd voor de shading wordt vergeleken. Resultaten Doel Een snellere evaluatie van de visibiliteitsfunctie V(x,y). Snelheid wordt vergeleken met een octree. Verwacht sneller, want Alle mogelijke blokkers voor een hit zijn op voorhand gekend. Zelfs umbra en penumbra informatie is op voorhand gekend. Enkel de tijd voor de shading wordt vergeleken. Van de tijdsmetingen werd een gewogen gemiddelde genomen.
Resultaten - testscènes
Resultaten - Versnelling Controleren op intersectie met umbra en penumbra regio levert niet op: het duurt langer. Ray tracen met P-LIE: 45% minder tijd nodig. P-LIE met verfijning volgens umbra: 51% minder tijd nodig.
Resultaten – Duur van de constructie 0.03 x aantalDriehoeken seconden Zonder verfijning 0.1 x aantalDriehoeken seconden Met verfijning volgens umbra regio 0.002 x aantalDriehoeken seconden Zonder bepaling van umbra en penumbra regio’s B.v. voor een scène met 10.000 driehoeken resp: 300’’ - 960’’ - 20’’
Conclusie De P-LIE structuur halveert (bijna) de tijd voor het evalueren van de directe belichting. Intersectie met umbra en penumbra regio leveren niet op. Verfijnen volgens umbra verhoogt de versnelling.
Constructie-duur van de LIE-structuur Conclusie Constructie-duur van de LIE-structuur Is groot in vergelijking met een octree. Oorzaak: bepalen van de umbra regio. Niet bepalen: - Geen optimalisaties + Snelle constructie
Conclusie – Toekomstige iteraties? Geen triangularisatie van de blockers, umbra en penumbra regio. Minder intersecties, maar intersectie met polygons. Andere blokker detectie methoden. O.a. dmv bemonsteren. Dynamische scènes Global Illumination Globale zichtbaarheid Bijhouden van caustic-regio’s
Vragen?