To compile, simply type "make clean" then "make". I can compile my solution on OS X 10.6 and the Hive machines, specifically Hive23. I have not tried on any other platform. A version of g++ supporting OpenMP is recommended. To render a scene, type "./raytracer filename" from within the directory containing the executable. There is limited error checking built-in for parsing. The seven autograder scene files have been provided. The output file will be in the same directory as the executable and its name will have a time stamp prepended. An Important Note: When writing to a file, FreeImage inexplicably reverses the red and blue colors on my machine while it does not on the Hive machines. The provided code for outputting the images in this submission is the Hive version. Swap the red and blue colors in Film.cpp if red and blue come out swapped on OS X. I worked alone for this project and did not implement an acceleration structure. Extra Credit: Antialiasing: -By jittering each ray within a given pixel and averaging over many samples, a primitive method of antialiasing was achieved. -To enable antialiasing, which is disabled by default, use the command "antialias X" where X is the number of samples per pixel to use somewhere in the scene file. -A scene titled "example-aa.txt" is provided for testing this command. Motion Blur: -By randomly assigning each ray a time within a time frame and averaging over many samples, objects in motion appear blurred along its trajectory. -Each object stores a velocity in addition to its material properties. The default is a velocity of <0, 0, 0>. -A velocity command is persistent, meaning it affects all primitives from that point on in the scene similar to changing material properties. -To change the current velocity, use the "velocity x y z" command to specify velocity in world coordinates. -No transform will affect the velocity. -To enable motion blur, which is disabled by default even if velocities are specified, use the command "motionblur X" where X is the number of samples per pixel to use somewhere in the scene file. -A scene titled "motionblur.txt" is provided to test this command. Note: If both antialiasing and motion blur are enabled, the number of samples per pixel used is the number specified by the command closest to the end of the file. Parallelization: -OpenMP was used to parallelize the code. -Performance increases in excess of an order of magnitude were observed on my machine. -The Makefile by default uses OpenMP. The "-fopenmp" flag can be removed from CFLAGS near the top to compile the raytracer without OpenMP, yielding a functional but much slower raytracer. Renders and render times from my machine are available here: http://inst.cs.berkeley.edu/~CS184-ex/hw5final.html