Hidden surface elimination must be performed so that obscured polygons or parts of polygons are not seen. Polygons must be rendered in the appropriate polyColor, subject to the limitations of the GWorld. Polygons are the same color on both sides. Parts of the projection plane not filled by projections of polygons should be black. In addition to projecting the polygon image as seen from viewPoint, you must also project the shadow of thePolys created by an illumination source at illumPoint, onto the projection plane and onto the image of other polygons, as seen from viewPoint.
All polygons have a flat matte surface, creating no specular reflections of the illumination source.
The illumPoint will be on the same side of the projection plane as the viewPoint. The offScreen GWorld will have a pixelDepth of 32. The projection plane is opaque, meaning that any part of a polygon behind the projection plane is invisible, creating no projection and no shadow. On average, CalcProjection will be called approximately 10 times with the same viewpoint and illumPoint, but different polygons, for each call to InitProjection. The code producing the fastest projection, including both the InitProjection and CalcProjection times, will be the winner.