Upload
bruce-cole
View
216
Download
0
Tags:
Embed Size (px)
Citation preview
Photon map creation
• Emit photon from light sources in turn based on relative energy output, until ‘n’ emitted.
• Photons all emit at same power but power and color may vary after reflectance.
• Stored AND / OR reflected at each hit surface.• Adjust photon energy based on number of
actual emitted photons.• Heavy use of random probability based on
surface material (drand48)
Sampling photons
• Incorrect density estimates = dark corners & edges• Problem: Photon map does not store geometry• Impractical… for direct visualization
Why do indirect lights work?
• Photon Map stores energy to emit ‘The Final Bounce’• Ray tracers use photon map to accelerate ‘Final Gathering’• Light Energy is conserved
Spatial structuresfor visibility testing
• Hybrid BSP• Top levels are octree• Lower levels arbitraryplanes• Stored as binary tree• Not balanced• Polys in leaves as edges
Packing texturesGood enough
• Many ways to generate texture atlas• Can be part of seam reduction• I used simple, largest first box packing with empty
space reclamation
There seems to be a problem
• The map makers problem… how to map a round surface to a flat plane, and hide the evidence.
• Biliner filtering worksagainst you.• There is no perfect solution.
(Feature) Size Matters
• Texel size vs Geometry wall thickness means choosing sample points wisely.
• Shift sample points within texel.• Use multiple sample point locations.
Why can’t I see the stars during the day time?
• Exposure control to the rescue… map infinite floating point light range to 8 bits.
• Pics show 0.5, 1.0, 2.0 K values for equation Klightebrightness 1
Area lights
• Pretend it’s Radiosity• Light polys sampled as jittered grid, texel receivers• How much energy from one area to another
How fast is it?
Operation Test 1 Test 2 Test 3 Test 4 Test 5 Test6 Num Photons 100,000 1,000,000 1,000,000 2,000,000 2,0000,000 2,000,000 Lightmap resolution 0.05m 0.025m 0.025m 0.01m 0.1m 0.5m Multisamples per direct light 20 50 50 200 200 200 Number Indirect lights 100 1,000 5,000 10,000 10,000 10,000 Total texels 685,682 1,892,375 1,892,375 7,317,169 327,842 158,387 Total Tex sample points 569,454 1,392,430 1,392,430 5,987,230 299,660 157,030 Total Light sample points 200 1,250 5,250 11,000 11,000 11,000 Total process time 2m 8.5s 19m 26.7s 1h 18m 57s 10h 40m 18s 40m 5s 24m 43s Prepare Geometry 17s 17s 17s 17s 17s 17s Create Smoothgroups 722ms 722ms 729ms 725ms 722ms 723ms Create Lightmaps 4.9s 4.9s 4.9s 5.15s 4.9s 4.9s Build Photon Map 2.8s 20.66s 20.71s 41.7s 41.8s 41.25s Balance kd-tree 152ms 1.73s 1.72s 3.56s 3.58s 3.59s Create indirect lights 104ms 1.16s 1.15s 2.13s 2.12s 2.17s Build Polygon BSPs 11.3s 11.3s 11.3s 11.3s 11.3s 11.3s Light World (& Calc Sample Points)
1m 48.3s 18m 46.4s 1h 18m 17s 10h 39m 15s 39m 3s 23m 40s
Pack Lightmap textures 78ms 522ms 523ms 714ms 31ms 13ms
Real-time?
• Deferred lighting / shading for many direct light sources.
• May not need shadows / occlusion per light.• Photon map creation (sample scene energy) and
prepare virtual lights takes ‘seconds’.• As background process, get results with latency.• Energy changes when lights OR geometry move.• Represent geometry with LOD mesh or voxels.
Questions?
From self published paper:Diffuse Global Illumination via Direct and Virtual Indirect Light Sources (2003) Download from citeseer or gmscript.com http://www.gmscript.com/gamemonkey/downloads/misc/LightingTechnique1.pdf
Some images used without permission… Thanks Google.
Thank you for staying awake and not texting.