CS184 HW5 Ray Tracer Hoemwork Page

(Woody) Ki Fung Chow - bx

Sui Fung Alex Wong - dp

Requirements

Test Scenes

Our ray tracer rendered all the test scenes correctly. The folllowing images are rendered with no sampling

Scene 4 - Ambient


Scene 4 - Diffuse


Scene 4 - Emission


Scene 4 - Specular


Scene 5


Scene 6


Scene 7


KD Tree Accelerator

Our KD Tree Accelerator uses Surface Area Heuristics to build. It also utilitizes bounding boxes for fast transversal. Here are some rough figures on how the accelerator is performing on a Intel i5 Quad Core Sandy Bridge Processor, with OpenMP optimization.

Scene 5(With KDAccel) - 5s
Scene 5(Without KDAccel) - 8m51s
Scene 6(With KDAccel) - 25s
Scene 6(Without KDAccel) - 20s
Scene 7(With KDAccel) - 37s

One can easily notice that Scene 6 renders quicker without the acceleration structure. It is because many bounds of the primitives in Scene 6 actually go from the left-end to the right-end of the scene. KD Tree is not the best appropriate acceleration structure for this kind of scene.

Filter

Gaussian Filter

We use the following settings to try to make the image blur:
Stratified Sampler with: half_ds: 6; xSampleCount: 20; ySampleCount: 20; jitter: true
Gaussian Filter with: x-width: 50; y-width: 50; alpha: 0.165

Scene 3


Scene 5


Different Rendering Techniques

Ambient Occlusion

Our ambient occlusion renderer can take an arbitary number of samples from a parameterizable cosine weighted function. One can also specify the bright and the dark color of the renderer. Here are a few images generated by the renderer.


Ambient Occlusion with 1 sample


Ambient Occlusion with 16 samples


Ambient Occlusion with 64 samples


Ambient Occlusion with 256 samples


Ambient Occlusion with 1024 samples


Set bright color to yellow and dark color to red to simulate the object under sunset

References

Professor Ramamoorthi's Lecture Slides
Structures of this ray tracer is roughly adapted and simplified from the PBRT v2

Accelerator Structure:
Wald, On building fast kd-Trees for Ray Tracing, and on doing that in O(N log N)
Williams, An Efficient and Robust Ray-Box Intersection Algorithm