CSCI 480/580 Lecture 10 - In-Class Problems

  1. Recall the pseudocode for the mirror reflection case in traceray looked like this:

    function traceray(ray, scene):
     t, rec = find_intersection(ray, scene)
     if rec.obj is a mirror:
       compute r, the reflection direction
       mirror_ray = Ray(rec.x, r)
       return traceray(mirror_ray, scene)
       # other cases, ...

    Notice that (for brevity) I omitted tmin and tmax arguments from thetraceray header and recursive call. Let’s put that back in - the function header will now be function traceray(ray, scene, tmin, tmax). What values of tmin and tmax should we now pass into the recursive call?

  2. Recall that the final diffuse+specular lighting model is as follows: \[ L = k_d I \max(0, \mathbf{n}\cdot\mathbf{\ell}) + k_s I \max(0, \mathbf{n} \cdot \mathbf{h})^p \] Suppose light source intensities and diffuse coefficient values are constrained to values between 0 and 1. What’s the maximum possible value of \(L\)?

  3. Suppose a camera view ray intersects a surface at the 3D point \(\mathbf{x}\). For each light source, we will generate a shadow ray and use ray_intersect to find whether there’s an object blocking the light source. The ray_intersect function is called as follows:

    ray_intersect(objs, Ray(orig, dir), tmin, tmax)

    The objs argument is just a list of objects in the scene - we’ll assume that’s taken care of.

    1. For a directional light source in direction \(\vec{\ell}\), give the ray orig, ray dir, tmin and tmax for the call to ray_intersect. Reminder: in this class we follow the convention that \(\vec{\ell}\) points towards the directional light source and thus points opposite the direction that light is actually “traveling”.

    2. For a point light source at 3D position \(\mathbf{s}\), give the ray orig, ray dir, tmin and tmax for the call to ray_intersect.