COMP870: Homework 3

Huai-Ping Lee

Photon Mapping

Global Map Only

Images generated with a global photon map of 70,000 photons, with three different numbers of photon neighbors:
Nneighbor = 100 Nneighbor = 150 Nneighbor = 200
NN = 100 NN = 150 NN = 200
The caustics are already there without the caustics map.

With Caustics Map

Images generated with a global photon map of 70,000 photons and a caustics photon map of 10,000 photons, with three different numbers of photon neighbors:
Nneighbor = 100 Nneighbor = 150 Nneighbor = 200
NN = 100 w/caustics map NN = 150 w/caustics map NN = 200 w/caustics map
We can get better (and brighter) caustics with the additional map.

Without Global Illumination

Reference image without global illumination (no supersampling):

no global illumination

Discussion

The images I generated with photon mapping have the problem of scaling of the power when estimating radiance from photons. I had to divide the radiance by the number of photon neighbors to avoid being too bright (entirely white), but after that the images are a bit dark. Maybe it can be solved with some tweaking. Smooth diffuse surface is very hard to render, and my un-optimized code does not allow me to use too many photons. The bleeding of color around the corners is also obvious.

Code

The code is here. The kd-tree library I used is KDTREE2 by Matthew B. Kennel at Institute for Nonlinear Science, University of California, San Diego.