Each line of the file may contain a single keyword followed by some values. Top-level keywords include GLOBAL_AMBIENT, GLOBAL_ATTENUATION, SPHERE, BOX, and POINT_LIGHT. The lines following a top-level keyword provide values for properties of the specified top-level item. A blank line separates a property list from the subsequent top-level item. The general format is: A file may contain any number of top-level items (except for GLOBAL_AMBIENT and GLOBAL_ATTENUATION, each of which should only occur once) and they may appear in any order in the file. All positions are in eye coordinates. Like in OpenGL, the eye is assumed to be at (0,0,0), looking in the negative z direction. ``Up'' is along positive y. ``Right'' is along positive x. For SPHEREs and BOXes, the (x,y,z) position specifies the location of the center of the object. For BOXes, ORIENTATION specifies a rotation matrix describing the orientation of the BOX with respect to the eye coordinate system (This should be fairly easy to extract from your Homework 3 code). The format is: GLOBAL_AMBIENT r g b GLOBAL_ATTENUATION kc kl kq SPHERE RADIUS radius POSITION x y z DIFFUSE r g b SPECULAR r g b shininess TRANSPARENCY fraction REFRACTION_INDEX fraction BOX SIZE x y z POSITION x y z ORIENTATION m11 m12 m13 m21 m22 m23 m31 m32 m33 DIFFUSE r g b SPECULAR r g b shininess TRANSPARENCY fraction REFRACTION_INDEX fraction POINT_LIGHT POSITION x y z DIFFUSE r g b SPECULAR r g b