Post on 21-Dec-2015
Time-Dependent Photon Mapping
Mike Cammarano
Henrik Wann Jensen
EGWR ‘02
Standard Photon Map
Two-pass algorithm:
1. Photon trace
2. Rendering
First Pass - Photon Trace
For 100 photons emitted from 100W source, each photon initially carries 1W.
Propagate this radiant flux through scene using MC methods.
Estimating incident flux
• At any patch of surface, we can estimate the incident flux:
Just average the contributions of all the photons that hit the patch.
A Photon
• For each surface interaction, we store:
struct photon {
float x,y,z; // position
char power[4]; // power (RGBE)
char phi, theta; // incident direction
short flag;
}
Photon Storage
Store this information about surface
interactions in photon map (kd-tree)
Photon storage is decoupled from geometry
Second Pass - Rendering
• Estimate flux incident at a surface point based on nearby photons.
Radiance Estimate
Expand ball until it contains some reasonable number of photons.
Use intersection with plane to estimate area of surface patch.
Radiance Estimate
What About Motion?
One Approach
• Render lots of intermediate frames independent of one another.
Average Intermediate Frames
Expensive
• Only some areas need to be densely sampled in time.
• Need MANY intermediate frames to get smooth results.
Adaptive Sampling
• Want to sample densely in time only for the pixels that need it.
• Easy with ray tracing. Can trace each ray for a different time in the interval. [Cook84]
Photon Map
• We can’t rebuild the photon map for every eye-ray with a different time!
• We would like to do DRT with photons, too.
• Given rays sampling various times and photons representing lighting at various times, how do we match them up?
Photons distributed in time
t=0.0 t=0.5 t=1.0
Energy
Radiant Flux Radiant Energy
Time-Dep. Radiance Estimate
Static surface, no occlusion
Photons in time
• Want average radiance ( ∫ … dt )
Time distribution
Average over time
Case 1
For stationary surfaces with unobstructed visibility through the entire view interval, we can ignore time distribution of photons.
Plane Moving Down
t=0.0
t=0.5
t=1.0
Photon Visualization
t=0.0
t=0.5
t=1.0
A Trickier Case
t=0.0
t=0.5
t=1.0
Average of independent frames Distributed photon times
Examples
Problem
• A given patch of surface is only visible through a particular pixel for a small portion of the total time interval.
• It’s brightness during that visible interval should depend only on the photons reaching it during that narrow window of time – not the “average” over all times.
Distribution in Time
Uncounted!
Narrow Window in Time
• Integrate over small visible interval.
Comparison
Performance
• Path tracing 9+ hrs
• Average of independent frames 47 sec
• TDPM 43 sec
• Our worst case: we get essentially no benefit from adaptive sampling – doesn’t cost much to oversample blue background.
• Try it in front of ~107 polygon forest …
Summary of Method
IF ray-path from eye is unaffected by motion:Can integrate over entire time interval – Δt = 1.(Use all the spatially nearby photons in the estimate)
ELSEIntegrate over shorter visible interval.Can use several criteria for choosing Δt adaptively:
1. Δt < user-specified MaxΔt
2. Δt chosen to use only k-nearest-photons-in-time
3. Δt < time spanned by the photons
Truck Scene
Effect
Comparison
Average of 9 frames - 316 seconds
Comparison
Our method – 72 seconds
Comparison
Ignoring case for eye-paths with movement
Conclusion
• Can incorporate correct global illumination via photon mapping in a ray-tracer that adaptively samples in time.
• Computing photon map with time-dependence requires little or no added cost beyond photon mapping for the corresponding still scene.
• Better performance than alternative methods for animated global illumination.