CS184 Section 3
Modeling a Ray Tracer

Brandon Wang
February 12, 2013
Material adapted from James O'Brien, Fu-Chung Huang, Ravi Ramamoorthi, and Carlo Sequin.



Rodrigues' Rotation Formula

Rotate a vector around an axis:


Gets rid of Gimbal Lock

(On board)


Write a ray tracer from scratch.

Ray Tracing Basics

Make a ray starting at your eye, through an image plane, and off into space...


\vec{r} = \vec{a}+t\cdot\vec{d}

Hitting an object

For now, loop over all objects, figure out if the ray intersects it. (Next week, do something smarter.)

Imagine a world of spheres only - center and radius. Intersection is if the ray comes closer than radius to sphere.

For transformations, transform the ray to object space. (This is done so you don't have to write arbitrary intersection tests, only with your primitives)

Once you do spheres, move on to boxes and triangles, and other shapes if you wish.

Hitting an object

Computing Lighting

Computing Lighting

You've already done this! Phong illumination model. (Review old slides when implementing)

Computing Lighting

Computing Lighting

But if you recurse, you can do nice things.

Shoot a ray from the point of intersection to...

In Implementation...

It will be a bit more difficult to get started with this, as you start from scratch.

  1. Get the BSOD. (Black image output.) Start with eye position, image plane corners, and image dimension.
  2. Make a primitive shape (sphere, triangle, or even circle). Write the ray-primitive intersection, but make it return some color for intersection. (Don't write the Phong stuff yet - make sure your geometry is right).
  3. Transform the primitive (scale, rotate, translate, etc). Make sure your rays are being transformed correctly
  4. Phong illumination model
  5. Shadows
  6. Acceleration structures (Next week)
  7. Fancy stuff (Your own leisure)

Raytracing Journal

I've heard that this is useful.

Raytracing Journal




And the more fancy...

Soft Shadows

Motion Blur

Subsurface Scattering

Global Illumination


Animated Movie

And anything else you can think of...