Photon Mapping
Paul Solt and Lyndsey Whitman
The goal of this project was to extend our ray tracer from Computer Graphics II by using a global illumination technique. The original ray tracer only calculates direct illumination, which only uses the light from a single bounce. It feels fake or the materials look like plastic, and colors can’t “bleed” into eachother from the different surfaces. If you painted a wall red and turned on a light in the room, the other walls would have a red tint from the red wall “bleeding” light onto the others walls.
Photon mapping captures the indirect lighting that occurs in a room. For example, when light bounces off the wall, onto the table, and up to the ceiling. We can use a more complex lighting technique to capture the estimated light in an environment and mix it with the colors of the object to provide a more realistic render.
Project Final Report and Documentation

Figure 1: Scene with Direct Illumination

Figure 2: 10000 Photons, 5 used in estimate

Figure 3: 100000 Photons, 1000 used in estimate

Figure 4: Reflection on the Wall with shadows

Figure 5: Refraction

Figure 6: Walls are reflective, yet still store some photons. 2x Multisampling. There are a few lines of artifacts.
Fixed a bug with an invalid Polygon which was part of the diagnol line artifact in the previous image.

Figure 7: Walls and floor are 0.7 reflective. 1000 photons, 50 used in estimate with range of 1.5 (101 seconds)

Figure 8: 10,000 photons, 300 used in estimate range 2.0 (104 seconds)
Visualizing the Photon Map


Figure 9: 10,000 photons. Range = 2.25 (Left or top) 100 used in estimate (Right) 600 used in estimate


Figure 10: 100,000 photons (Left) 1,000 used in estimate, range = 1.5 (Right) 10,000 used in estimate, range = 1.0

Figure 11: 10000 photons 300 used in estimate range 2.5 (86 seconds)


Figure 12: 10000 photons 300 used in estimate range 2.5 (100 seconds) / Direct Illumination on the Right side


Figure 13: 10000 photons 300 used in estimate range 2.5 (239 seconds) Multiple Reflections on./ Photon Irradiance Visualized

Figure 14: 10000 photons 300 used in estimate (41 seconds)

Figure 16: (8074 seconds) 100000 photons, 800 used in estimate, 2.0 range.
Artwork Evolution
Facebook
@PaulSolt
- I just unlocked the "Super Swarm Sunday" badge on @foursquare! Go team! http://t.co/jg1u7Blz 4 hours ago
- I'm at Super Swarm Sunday w/ @michaelmurphy @aaronfeng @benatnewdigs @unystartups @amblatx1 @skeeterharris @ianmikutel http://t.co/pPsid8Aj 4 hours ago
- RT @mattgemmell: CGPathCreateCopyByStrokingPath() (new in iOS 5 / Lion). I've wanted this function for as long as I've written UI code. ... 2012/02/04
Github
Tags
animation App Store Artwork Evolution Boost Boot Camp C++ cross platform default values development Dual Monitors function pointers Gears of War 2 git GLUT graphics ImagineRIT Impulse inheritance iOS iPad iPhone Macbook Pro Mac OS X MacPorts member functions Objective-C OpenGL PAX 10 player/stage polymorphism programming remote control RIT Robot robotics SCM static methods STL svn 1.6 version control Windows XP Xbox 360 Xcode xcode 3.1.2 XNA


