The goal of writing this rendering library is to provide the application programmer with a set of tools for realistic rendering of a wide range of geometry. The current implementation of the library supports rendering of several kinds of objects, including boxes, cylinders, smoothed triangles, flat triangles, quadric surfaces, rings, planes, spheres, and volumetric data. Currently, geometry is modeled solely through the use of the basic primitives. Future enhancements will allow matrix transformations to be applied to primitives to allow scaling and warping. Figure 1 shows the teapot generated by the SPD database using smoothed triangles [5]. SPD includes several test scenes which can be used when benchmarking rendering software. The image shown in Figure 2 is a starship rendered using a simple triangle mesh. Since many applications currently use polygon meshes to model objects, it is important to support a variety of polygon primitives. This is currently accomplished using triangle meshes. Future revisions of the rendering library will include a wider range of polygon rendering primitives.
Figure 2: "Millenium Falcon" Object
It is currently necessary to use a large number of primitives such as cylinders, spheres, and triangles to render complex models. In the near future the rendering library will allow creation of complex models using Constructive Solid Geometry (CSG) [1]. CSG uses unions, differences, and intersections of solids to define new solids. When used properly, CSG can drastically reduce the number of primitives required to effectively model an object. Objects that would ideally be modeled using CSG must currently be rendered using meshes of smoothed triangles.