This is a HTML version of the slides from my presentation at the Dagstuhl seminar in June 2000. The presentation was an up-to-date version of my article "Faster photon map global illumination" in the Journal of Graphics Tools. Compared to that article, the render times have been significantly reduced, and I also talked about possible future improvements of the method.

**Faster Photon Map Global
Illumination**

*Per H. Christensen*

Square USA, Honolulu, Hawaii

**Abstract**: The photon
map method is an extension of ray tracing that enables it to
efficiently compute caustics and soft indirect illumination on
surfaces and in participating media. This presentation
describes a method to further speed up the computation of soft
indirect illumination on surfaces The speed-up is based on
the observation that the many look-ups in the global photon map
during final gathering can be simplified by (pre)computing local
irradiance values at the photon positions. Our tests
indicate that the calculation of soft indirect illumination can
be sped up by a factor of 5-7 in typical scenes. The
irradiance values can be computed before or during
rendering. Other applications include participating media
and importance at ``importon'' positions.

**Outline**

- The photon map method [Jensen94-96]
- Faster final gathering (JGT, April 2000)
- Ideas for future work

**Advantages of the photon map method**

- Handles all global illumination effects
- Handles very complex scenes
- Relatively fast
- Easy to parallelize

**The photon map method: overview**

- Photon pass: emit, trace, store photons
- Sort photons
- Rendering: ray tracing with final gather and photon map lookups

**1) Photon Pass**

(figure showing photon paths in a Cornell box and the photons stored in the global map)

**2) Sort photons**

- Sort the stored photons for fast lookups during rendering
- Use kd-tree for efficiency

**3) Rendering**

- Use ray tracing for direct illumination and specular reflection/refraction
- Indirect illumination of diffuse surfaces:
- caustic (SD): lookup in caustic photon map;

- soft indirect illumination (DD): final gathering (one level of distribution ray tracing), lookup in global photon map, Ward's irradiance gradients

**Observations**

- Final gathering is the bottleneck - especially the photon map lookups (locating the nearest 50-200 photons)
- Rays from different final gathers hit nearly the same place: almost identical photon map lookup are repeated again and again

**Faster final gathering**

- Precompute irradiance at all (or some) photon positions
- During final gathering, use precomputed irradiance at the nearest photon with similar normal (Voronoi diagram)

**Example**

- >1M polygons
- 1024 x 768 pixels, up to 16 samples/pixel
- Laptop with 233MHz Pentium, 32MB

**Example: classic ray tracing**

Classic ray tracing: 12 min. (soft shadows, textures)

**Example: photon map**

500,000 photons. Tracing: 39 sec, sorting: 12 sec

**Example: irradiance (1)**

(figure omitted -- see the JGT article)

Irradiance estimates at image sample points (200 photons)

**Example: irradiance (2)**

(figure omitted -- see the JGT article)

Precomputed irradiance estimates at 500,000 photon positions. Precomputation: 5 min. (Voronoi diagram)

**Example: irradiance (3)**

Precomputed irradiance estimates at 125,000 photon positions. Precomputation: 1.2 min.

**Example: radiance**

Radiance estimates (this is what the final gather "sees")

**Example: complete image**

Complete image. Final gathering: 69 min -> 13 min. Total render time: 94 min -> 28 min.

**Summary**

- Simple optimization of the photon map method: precompute irradiance
- Makes final gathering 5-7 times faster by removing the bottleneck
- Cost: precomputation time (<2%); extra memory (28%)

**Other applications**

- Participating media: ray marching
- Importance ("importons" [Peter98])
- Wide glossy reflection (directional diffuse)

**Ideas for future work**

- Faster precomputation
- No precomputation
- Other ideas??

**Faster precomputation (1)**

- Exploit coherence between neighbor irradiance estimates
- Better datastructure than kd-tree?

**Faster precomputation (2)**

- Better choice of which photon positions to
precompute irradiance at
- currently: all or 1/4 (safe, but not optimal)

- needed most at high gradients

**No precomputation**

- Compute and store irradiance at photon
positions on the fly (as needed during rendering)
- avoids computing irradiance where not needed

- automatic importance "weight"

**Conclusion**

- The photon map method is great
- Simple optimization: 5-7 times faster
- More optimizations can be done !

Back to Per's presentations page.