A Parallel Stochastic Photon Mapping Ray Tracer Using MPI 

Kayvon Fatahalian
Jonathan Hui


        We have built a parallel ray tracer that implements Monte Carlo path tracing as well as photon mapping.  Our implementation builds upon the ray tracing code included as part of Stanford's SPLASH-2 parallel benchmark suite.  The original SPLASH-2 ray tracer  is a shared memory application. We have removed the shared memory parts of the original code and parallelized the renderer using a message passing model via MPI.  Our code is written entirely in C and has been demonstrated to scale linearly on several platforms on hundreds of processors.

Example Scenes

Crystal AppleA translucent red apple casts complex caustics onto the floor.
Genie LampReflections produce neat effects on complex surface of the lamp.  Path tracing produces color bleeding from the wall onto the floor. 
Cornell Box.  Our version of the traditional Cornell box.   Translucent reflective spheres have been added to demonstrate caustics.

Demonstrations

Direct Visualization of the Photon Map. A demonstration of the quality of the photon map with increasing number of photons and using varying numbers of photons in the radiance estimate from the photon map.
Monte Carlo Path Tracing on the Cornell Box.  A demonstration of how simple path tracing produces very noisy results unless a large number of paths are traced per pixel.

Documentation & Results

CMU CS 15495: Parallel Systems

COMING SOON: performance results in HTML format. For now, everything is in the FINAL REPORT.

Created December 2002 by Kayvon Fatahalian & Jonathan Hui