|
A photon
map is created by emitting a large number of photons from the light
sources into the scene.
Each photon is traced through the scene, and when it hits a non-specular
surface, it is stored in the photon map.
This can be a separate data structure, e.g., kD-tree.
These photons are stored with incoming direction vectors to provide samples of the incoming light
flux at various surface points. This photon map can then be used to produce radiance estimates for any assumed BRDF.
More samples should be cast to "important" surface points; thus two separate photon maps are created:
1.) A high-resolution photon map that represents caustics (spots where
light is concentrated by lensing effects) to be visualized directly; 2.) A global photon map of lower resolution
that serves to reduce
the number of reflections that need to be traced, and also to generate
optimized sampling directions in the Monte Carlo ray
tracer (to increase its efficiency). Radiance values for a given
location are then generated by interpolating over the nearest N photon
samples stored.
|