Standard Procedural Databases
by Eric Haines et al.
click on an image to see a full size rendering
(rendered with POV-Ray 3.1)
You can
download the latest version of the SPD (currently 3.13). This software package is not copyrighted and can be used freely (for example,
WCT2POV, a good 3D file converter
for Windows, uses SPD's libvec.c graphics library).
All source is in K&R vanilla C (though ANSI headers can be enabled) and has
been used on many systems. A MacOS version can be found on
Eduard Schwan's SPD page.
This software is meant to act as a set of basic test images for ray tracing
algorithms. The programs generate databases of objects which are fairly
familiar and "standard" to the graphics community, such as the teapot, a
fractal mountain, a tree, a recursively built tetrahedral structure, etc. I
originally created them for my own testing of ray tracing efficiency schemes.
Since their first release other researchers have used them to test new
algorithms. In this way, research on algorithmic improvements can be compared
in a more standardized fashion. If one researcher ray-traces a car, another a
tree, the question arises, "How many cars to the tree?" With these databases
we may be comparing oranges and apples, but it's better than comparing oranges
and orangutans.
Using these statistics
along with the same scenes allows us to compare results in a more meaningful
way.
Another interesting use for the SPD has been noted: debugging. By
comparing the images and the statistics with the output of your own ray tracer,
you can detect program errors. For example, "mount" is useful for checking if
refraction rays are generated correctly, and "balls" (a.k.a. "sphereflake")
can check for the correctness of eye and reflection rays.
The images for these databases and other information about them can be
found in A Proposal for Standard Graphics Environments, IEEE Computer
Graphics and Applications, vol. 7, no. 11, November 1987, pp. 3-5. See
IEEE CG&A, vol. 8, no. 1, January 1988, p. 18 for the correct image of
the tree database (the only difference is that the sky is blue, not orange).
The teapot database was added later.
The Neutral File Format is the default output format
from SPD programs. This format is trivial to parse (if you can use sscanf,
you can parse it), and each type of object is defined in human terms
(e.g. a cone is defined by two endpoints and radii). The basic shapes
supported are polygon and polygon patch (normal per vertex), cylinder, cone,
and sphere.
Note that there are primitives supported within the SPD which are not
part of NFF, e.g. heightfield, NURBS, and torus, so more elaborate programs
can be written. If a format does not support a given primitive, the primitive
is tessellated and output as polygons.
Other output formats are
supported:
-
POV-Ray 1.0
-
POV-Ray 2.0 to 2.2
-
POV-Ray 3.1
-
Polyray 1.4 to 1.6
-
Vivid 2.0
-
QRT 1.5
-
Rayshade 4.0.6
-
RTrace 8.0.0
-
Art 2.3 (from Vort)
-
RenderMan RIB
-
AutoCAD DXF [object data only]
-
Wavefront OBJ format (polygons only)
-
RenderWare RWX script file
-
Apple 3DMF
-
VRML 1.0
-
VRML 2.0
Alexander Enzmann receives most of the credit for creating the various
file format output routines, along with many others who contributed.
There are also reader programs for the various formats. Currently the
following formats can be read and converted:
-
NFF
-
DXF (just 3DFACEs)
-
OBJ
This makes the NFF format a nice, simple language for quickly creating
models (whether by hand or by program), as any NFF file can be converted to many
different formats. Warnings:
-
The conversions tend to be verbose in many cases (e.g. there is currently
no code in place to group polygons of the same material into polygon
mesh primitives used in some formats).
-
No real tessellation of polygons is done when needed for conversion,
all that happens are that polygon fans are created.
-
You might find the images you obtain are mirror reversed with some formats
(e.g. VRML 2.0 files).
The Graphics
Gems V code distribution has a simple z-buffer renderer by Raghu
Karinthi, using NFF as the input language.
On hashing: a sore point in mount.c, the fractal mountain generator, has been
its hashing function. Mark VandeWettering has provided a great hashing function
by Bob Jenkins.
To show what a difference it makes, check out images of models made with the
original hash function with a large size factor,
replacement hash function I wrote (still no cigar),
and
Jenkins' hash function.
For more information on the SPD, see the README.txt file included in the
distribution.
Research Works using SPD
Timing comparisons for the various scenes using a wide variety of free software
ray tracers are summarized in The Ray Tracing News,
3(1) (many),
6(2),
6(3),
8(3), and
10(3).
Here are some research works which have used the SPD to benchmark their ray
tracers (please let me know of others):
- Kay, Timothy L. and James T. Kajiya, "Ray Tracing Complex Scenes,"
Computer Graphics (SIGGRAPH '86 Proceedings), 20(4),
Aug. 1986, p. 269-78.
-
Arvo, James and David Kirk,
"Fast Ray Tracing by Ray Classification,"
Computer Graphics (SIGGRAPH '87 Proceedings)
21(4),
July 1987,
p. 55-64.
Also in Tutorial: Computer Graphics: Image Synthesis,
Computer Society Press, Washington, 1988, pp. 196-205.
Predates SPD, uses recursive tetrahedron.
-
Subramanian, K.R.,
"Fast Ray Tracing Using K-D Trees,"
Master's Thesis,
Dept. of Computer Sciences, Univ. of Texas at Austin,
Dec. 1987.
Uses balls, tetra, tree.
-
Fussell, Donald and
K.R. Subramanian
"Fast Ray Tracing Using K-D Trees,"
Technical Report TR-88-07,
Dept. of Computer Sciences, Univ. of Texas at Austin
March 1988.
Uses balls, tetra, tree.
-
Salmon, John and Jeffrey Goldsmith
"A Hypercube Ray-Tracer,"
Proceedings of the Third Conference on Hypercube Computers and Applications
,
1988. Uses balls and mountain.
-
Bouatouch, Kadi and Thierry Priol,
"Parallel Space Tracing: An Experience on an iPSC Hypercube,"
ed. N. Magnenat-Thalmann and D. Thalmann,
New Trends in Computer Graphics (Proceedings of CG International '88),
Springer-Verlag, New York, 1988, p. 170-87. Uses balls.
-
Priol, Thierry and Kadi Bouatouch,
"Experimenting with a Parallel Ray-Tracing Algorithm on a Hypercube Machine,"
Eurographics '88,
Elsevier Science Publishers,
Amsterdam, North-Holland,
Sept. 1988,
p. 243-59.
Uses balls.
-
Devillers, Olivier,
"The Macro-Regions: an Efficient Space Subdivision Structure for Ray Tracing,"
Eurographics '89,
Elsevier Science Publishers,
Amsterdam, North-Holland,
Sept. 1989,
p. 27-38, 541.
(revised version of Technical Report 88-13,
Laboratoire d'Informatique de l'Ecole Normale Superieure, Paris, France,
Nov. 1988). Uses balls, tetra.
-
Priol, Thierry and
Kadi Bouatouch,
"Static Load Balancing for a Parallel Ray Tracing on a MIMD Hypercube,"
The Visual Computer,
5(1/2),
March 1989,
p. 109-19.
Uses balls.
-
Green, Stuart A. and D.J. Paddon,
"Exploiting Coherence for Multiprocessor Ray Tracing,"
IEEE Computer Graphics and Applications,
9(6),
Nov. 1989,
p. 12-26.
Uses balls, mount, rings, tetra.
-
Green, Stuart A. and D.J. Paddon,
"A Highly Flexible Multiprocessor Solution for Ray Tracing,"
The Visual Computer,
6(2),
March 1990,
p. 62-73.
Uses balls, mount, rings, tetra.
-
Dauenhauer, David Elliot and
Sudhanshu Kumar Semwal,
"Approximate Ray Tracing,"
Proceedings of Graphics Interface '90,
Canadian Information Processing Society,
Toronto, Ontario,
May 1990,
p. 75-82.
Uses balls, gears, tetra.
-
Badouel, Didier,
Kadi Bouatouch,
Thierry Priol,
"Ray Tracing on Distributed Memory Parallel Computers: Strategies for
Distributing Computations and Data,"
SIGGRAPH '90 Parallel Algorithms and Architecture for 3D Image Generation
course notes,
1990.
Uses mountain, rings, teapot, tetra.
-
Green, Stuart A.,
Parallel Processing for Computer Graphics,
MIT Press/Pitman Publishing,
Cambridge, Mass./London,
1991.
Uses balls, mount, rings, tetra.
-
Subramanian, K.R. and
Donald S. Fussell,
"Automatic Termination Criteria for Ray Tracing Hierarchies,"
Proceedings of Graphics Interface '91,
Canadian Information Processing Society,
Toronto, Ontario,
June 1991,
p. 93-100.
Uses balls, tetra.
-
Fournier, Alain and
Pierre Poulin,
"A Ray Tracing Accelerator Based on a Hierarchy of 1D Sorted Lists,"
Proceedings of Graphics Interface '93,
Canadian Information Processing Society,
Toronto, Ontario,
May 1993,
p. 53-61.
Uses balls, gears, tetra, tree.
-
Simiakakis, George, and
A. Day,
"Five-dimensional Adaptive Subdivision for Ray Tracing,"
Computer Graphics Forum,
13(2),
June 1994,
p. 133-140.
Uses balls, gears, mount, teapot, tetra, tree.
-
Klimaszewski, Krzysztof and
Thomas W. Sederberg,
"Faster Ray Tracing Using Adaptive Grids,"
IEEE Computer Graphics and Applications
17(1),
Jan/Feb 1997,
p. 42-51.
Uses balls.
-
Müller, Gordon and Dieter W. Fellner,
"Hybrid Scene Structuring with Application to Ray Tracing,"
Proceedings of International Conference on Visual Computing (ICVC'99),
Goa, India, Feb 1999, pp. 19-26.
Uses balls, lattice, tree.
-
Havran, Vlastimil and
Filip Sixta
"Comparison of Hierarchical Grids,"
Ray Tracing News, 12(1), June 25, 1999.
Uses all spd.
Additional statistics are available at this site
-
Havran, Vlastimil,
"A
Summary of Octree Ray Traversal Algorithms,"
Ray Tracing News, 12(2), December 21, 1999.
Uses all spd.
Additional statistics are available at this site
Graphics Benchmarks
Various graphics hardware comparisons are available online.
The Graphics Performance
Characterization group has been around for a long time.
Gemini Technology Corporation
has begun an effort to benchmark graphics hardware accelerators and share
the results with the public.
back to
TOG Software
Eric Haines,
On-Line Editor / erich@acm.org
Last change: January 15, 2000