Photon Mapping on Programmable Graphics Hardware

Tim Purcell (Stanford University)
Craig Donner (University of California, San Diego)
Mike Cammarano (Stanford University)
Henrik Wann Jensen (University of California, San Diego)
Pat Hanrahan (Stanford University)

Ring with caustics rendered entirely on the graphics card


We present a modified photon mapping algorithm capable of running entirely on GPUs. Our implementation uses breadth-first photon tracing to distribute photons using the GPU. The photons are stored in a grid-based photon map that is constructed directly on the graphics hardware using one of two methods: the first method is a multipass technique that uses fragment programs to directly sort the photons into a compact grid. The second method uses a single rendering pass combining a vertex program and the stencil buffer to route photons to their respective grid cells, producing an approximate photon map. We also present an efficient method for locating the nearest photons in the grid, which makes it possible to compute an estimate of the radiance at any surface location in the scene. Finally, we describe a breadth-first stochastic ray tracer that uses the photon map to simulate full global illumination directly on the graphics hardware. Our implementation demonstrates that current graphics hardware is capable of fully simulating global illumination with progressive, interactive feedback to the user.

Reference: Tim Purcell, Craig Donner, Mike Cammarano, Henrik Wann Jensen, and Pat Hanrahan: "Photon Mapping on Programmable Graphics Hardware". Graphics Hardware 2003.

photongfx.pdf (3.5MB)