CS184 HW6 Extended Ray Tracer Homework Page

(Woody) Ki Fung Chow - bx

Sui Fung Alex Wong - dp

Our ray tracer in HW5 (click here) was already quite complete. We had a very fast KD Tree Accelerator which can render Scene 7 in about 30s. For sampling and filtering, we had implemented gaussian filter and triangle filter. We also included an adjustable ambient occlusion renderer for artistic rendering.

This extended ray tracer further improves our old ray tracer with the following new functionalities.

New Primitives

Our ray tracer now supports Disk, Cone, and Cylinder primitives.

New Materials

Our ray tracer now supports the following realistic materials:

Mirror: Perfect specular reflection is used

Plastic: The diffuse component of this is calculated by the Oren-Nayar Microfacet model, and the specular component of this is calculated by the Torrance-Sparrow Microfacet model. We used Blinn's simplifed version of geometric term, and Schlick's approximation for the Fresnel Reflectance.

Metal: Again we used Torrance-Sparrow microfacet model, and Schlick's approximation for the Fresnel Reflectance. We have to look up external reflection color tables to correctly model real metals. For example, the external reflection color of Gold is found to be(1.00, 0.71, 0.29).

Glass: We used Schlick's approximation for the Fresnel Reflectance with external reflection color equals to (0.21, 0.21, 0.21). We used Snell's law to calculate the refractions.

Environment Map

Our ray tracer can reads a latitude-longtitude environment map which width is 2x its height. The map is being mapped to a sphere. Rays that do not hit any objects in the scene will hit this environment map, returning color pixels from the map instead of black. This enables us to have realistic high dynamic range lighting in our scene

Depth of Field

Our ray tracer can now resembles a camera's depth of field effect by setting aperture and focal length in the scene file. We just shifted the eye ray's origin for a small offset, and target that ray at the focal plane to resemble that effect.

Area Light

Our ray tracer supports an emissive disk object. It will shoot multiple shadows rays from the intersection point to the uniformly sampled points on the disk. As a result, natural soft shadows can be observed in the rendered images.


We decided to put all the above functionalities in a few images than to create an image for each function separately.

Image 1 (EXR)

This scene consists of a copper cylinder, a glass sphere, a gold cone, a mirror disk and a iron plane. The metal objects may not seem very realistic because we did not sample our reflections. We used the Grace Cathedral as an environment map.

Image 2 (EXR)

This scene consists of an emissive disk, a "naive" plastic ball on the left, which uses only Lambertian reflection and Blinn's formula for specular reflection, and a plastic ball on the right, which uses the more realistic plastic model described above, with the Gaussian distribution's standard deviation set to 40degrees.

It's apparent that the ball on the right is softer in apperance. Also, please notice the soft shadows as a result of using area light.

Image 3 (EXR)

This scene consists of several glass spheres, and an environment map of a seaside. We set the focus on the sphere on the middle-right; depth of field should be apparent. We used the Gaussian filter we implemented in HW5 for sampling to achieve a smooth result. Also, please notice the effect of reflections and refractions happening together on the glass spheres.


Professor Ramamoorthi's Lecture Slides

Akenine-Moller, Real-Time Rendering Third Edition for the external reflection colors of materials, and some reflection formulas.

Dorsey, Digital Modeling of Material Apperance for some other reflection formulas.

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

Environment Maps:
The Grace Catherdral map is taken from here: http://gl.ict.usc.edu/Data/HighResProbes/

The seaside map is taken from here: http://www.heroturko.me/3d/2613281-interior-exterior-panoramic-hdri-maps.html