Goal: Ray trace a scene where
- the only objects in the scene are generic spheres, generic
planes, generic cubes, generic squares, and generic
tapered cylinders, which may
have been
- scaled
- translated
- rotated with respected to an axis
- in addition to color, the attributes of the generic primitives
may include material values for diffuse, specular, ambient color
- in addition to material attributes, the plane,
the square, and the sphere may
be textured with a 2D image.
- the image is defined in a ppm formatted file
- a positional light may be placed in the scene by specifying
its position
- the light has a diffuse, specular, and ambient component
- a value for global ambient light may be assigned
- the intensity of lights may be attenuated
by including values for
- constant attenuation factor
- linear attenuation factor
- quadratic attenuation factor
- a spotlight may be placed in the scene
by specifying its
- position
- spot direction
- cutoff angle
- spot exponent
- shadows are correctly rendered, including
on textured surface
- speedup: extents are used around each
generic primitive (generic cube around the generic primitive is
test first; if hit, then primitive is tested)
- the camera is set up
- at position (eyex,
eyey, eyez),
- looking at point (look_atx,
look_aty, look_atz), with
- the original up-direction for the
camera being <upx,
upy, upz>.
- speed-up has been accomplished by more
wisely computing the ray's direction, for each ray.
- descriptions of the objects, lights, and camera, as well
as the names of the image files, are read
in from a file, using SDL
- value for backgroundColor is now read
in from the scene description file, using SDL
- the ray tracer correctly handles reflections
- value for maximum recursive depth (for calculating
reflections) is read in from the scene description file, using
SDL
- value for "shininess" of an object (0.0
to 1.0) is read in from the scene description file, using
SDL
|