CS 488 Project

Raytracer extensions — Jim Zhang, 2017 Dec 4

Objective 1: Adaptive anti-aliasing

After an initial rendering pass, edges are detected and supersampled.
Scene: Potato, cabbage, and carrot.

Objective 2: Soft shadows

Light sources can encompass an area. Shadow rays are cast to a random point within the area.
Scene: Sphere, gem, and cube in a Cornell box.

Objective 3: Glossy reflections

Reflected rays are perturbed by a random amount depending on the material's roughness.
Scene: Final scene from A4.

Objective 4: Multithreading

Multiple threads render the image in parallel. Timing results were obtained by rendering my final scene from A4 at 512×512 with glossy side mirrors, using the 56-core machine ubuntu1604-002. Speedup is slightly sublinear with the number of threads.

Objective 5: Depth of field

A focal length and aperture radius can be specified. The scene is rendered multiple times with the eye location perturbed across the circular aperture.
Scene: Copper, silver, and gold balls.

Objective 6: Refraction

Objects can be transparent. Transparent objects can have a refractive index. Light is bent with Snell's law.
Scene: Sphere, gem, and cube.

Objective 7: Normal mapping

Surface normals are perturbed based on a normal texture, u,v coordinates, and tangent vectors along u and v.
Scene: Rough potato, sphere, and cube over a normal-mapped moon.

Objective 8: Texture mapping

An object's diffuse color is looked up on a texture using u,v coordinates.
Scene: Cutting board with potato, cabbage, and carrot.

Objective 9: Phong shading

Mesh normals are interpolated from vertex normals using Barycentric coordinates.
Scene: Wine glass and potato.

Objective 10: Final scene

Final scene with Alice Nakiri's culinary masterpiece.