Mehmet Ozan Kabak

A91880419

 

CSE 168 Final Assignment

 

Overview:

 

In the final project my main goal was to experiment with global illumination. At first I wanted to implement Photon Mapping in conjunction with Irradiance Caching, however time didn’t permit me to move on to the Irradiance Caching part. I also added support for light sources with arbitrary 3-D geometry which enables my renderer to render soft shadows.

 

Scene:

 

To test / compare my results with existing global illumination renderers, I chose a very well known scene for the assignment, namely “the Cornell Box”. I put a spherical mirror in the box to observe the specular reflection and a glass sphere to observe caustics.

 

Discussion of the techniques:

 

The main issue I dealt in this project was the high-frequency noise. The issue appeared in both soft shadows and photon mapping (in the final gathering step.) For soft shadows, the noise was due to picking insufficient sampling points on the light source. To get a reasonably noiseless image, I had to increase shadow ray count up to 512. However, this resulted in an extremely slow rendering. To overcome this issue, I changed my sampling method. I gave up on stochastic sampling on the points on the light source, and predetermined a lower number of points on each light source in the beginning of the rendering. Then I used these fixed points during the rendering, which resulted in a noiseless image. However, the downside of this technique is that it results in shadow bands. Nevertheless, for ~128 shadow rays, the bands are not that disturbing; and this small banding is still much better compared to the noise when we utilize ~128 stochastic samples on the light source.

 

Also, in the final gathering step, I encountered the same noise issue. Again, this was due to insufficient number of gather rays. The solution was again to increase the number of gather rays. However, increasing the number of gather rays REALLY slowed the renderer down. The maximum # of gather rays I tried was 16, and the image was still noisy. So I gave up on the final gathering scheme and computed indirect illumination directly by consulting the corresponding photon map.

 

Changes from assignment 3:

 

I changed the syntax of the scene description file again. I will not give a full description here, but I tried to make it as intuitive as possible and I think it should be easy to grasp it in a few minutes from the scene description files of the renderings I have given. One feature to note is that to visualize the photon map, one can use the –p option.

 

Lessons learnt:

 

 

Results / Work in progress:

No GI, only soft shadows with 64 samples.

Photon Mapping with final gathering, 5000 photons, 1 final gather ray.

 

Scene with partial GI: GI doesn’t work for specular reflection / transmission.

 

Scene with full GI without caustics. Bad sampling for GI.

 

 

Scene with better sampling methods for GI without caustics. Indirect illumination is more emphasized. However 5000 photons are not enough, so on the ceiling we still see low frequency variations. 8x random supersampling.

 

 

Visualization of direct photon map.

 

 

Visualization of indirect photon map

 

 

Visualization of caustics photon map.