Eric Haines
Mail me at erich@acm.org; if that bounces, try me direct at ehaines1@twcny.rr.com. I work for Autodesk, Inc.
This page can now be reached by the URL http://www.erichaines.com/, the short
version being just typing "erichaines.com" as the address.
My portal page sums up
what real-time computer graphics resources I use the most. The ACM
TOG resources area is where I put computer graphics research and education
related links. The Ray
Tracing News contains links to all sorts of computer graphics related
resources, as does our Real-Time Rendering
page (obligatory Amazon
link here). I also have a personal
page with book and game recommendations, plus wildflower, tree, and bird
identification programs (I love Perl).
Current Interests
Here are some resources and whatnot that I work on:
- For I3D 2008 John Owens, Spike Hughes, and I came up with a pub quiz, meant to take about an hour for teams of about 6 people,
10 minutes per set of questions. Here is the answer key.
Here's a photo of the scoreboard near the end.
- Real-Time Rendering
- a book and website on real-time rendering algorithms, coauthored with Tomas
Möller and Naty Hoffman. A page from this site I like to use as a jump-off spot is my
portal page.
- journal of graphics tools - a journal
dedicated to presenting practical tools and techniques. The web site has useful
code for some of the articles.
- Ray Tracing
News - an electronic magazine/journal concerned with ray tracing and
other rendering algorithms, published when I find the time.
- Graphics Gems Repository
- a repository of the code from the popular Graphics Gems series of
books.
- ACM Transactions on Graphics - a
computer graphics research journal; I webmaster for it. The literature
and software pages are handy.
- 3D Object Intersection Page
- a handy table of references to algorithms for object/object intersection.
- Ray tracing bibliography
- a free bibliography of ray tracing references. Sadly out of date, but still...
- Standard Procedural
Databases (SPD) software package - creates 3D models, mostly for testing
ray tracer efficiency schemes. First presented in an
IEEE CG&A article Nov. 1987.
The source is in the public domain, and includes
some useful 3D graphics code. I wrote the original, Xander Enzmann and others
wrote converters to other common file formats.
- Fantasy Graphics League
- demented or silly, you decide...
- The
Realtime Raytracing Realm - put real-time rendering and ray tracing together
and what do you get? I maintained this page of PC demos for Piero Foscari. Dated now,
but some of the demos still astound me (256 byte ray tracer? Gotta love it).
- pellucid
- a java applet which shows the VRML rendering equation in action. Ancient, but I
have a soft spot for it as it was my first Java program (and it still runs).
Feel free to use/copy/modify these slidesets in a reasonable fashion. Microsoft
provides a free
PowerPoint viewer if you need it. Talks are listed with most recent first.
- Ray Tracing: Strengths and Opportunities,
August 10, 2008, Symposium on Interactive Ray Tracing 2008.
Powerpoint 2007 slides and
older Powerpoint format slides available.
There's also a fast-forward version of the talk.
Abstract: "With the surge of interest in ray tracing for interactive rendering, it is worth
reviewing what benefits this algorithm has to offer, and what challenges lay ahead.
Some characteristics of ray tracing fit well with modern computer architectures,
others become more difficult to use as processors evolve, and a few ray tracing "features"
are probably distractions. The evolution of various computational elements--processing power,
cache, bandwidth, latency, I/O--affect ray tracing differently than they do rasterization.
At the same time, the boundaries between these two rendering methods is blurring as
algorithmic elements from ray tracing become implemented in GPU shader code. This
presentation explores how ray tracing contrasts with Z-buffering in its current form,
and makes some predictions about possible futures."
- Subtle Tools,
July 2003, NVIDIA University keynote. A one-hour talk about little-known but useful graphics methods, along with
exhortations to the research community to also publish minor results. Includes five quiz
questions to test your graphics knowledge.
- Real-Time Hardware,
November 2002, two hour-long lectures on this topic for the advanced rendering course
at Cornell.
- The
Demo Scene, July 2002, presented at SIGGRAPH
2002. A panel consisting of a number of short talks on aspects of the
Demo Scene. Even if you don't want to read the text, the bundle is worth downloading
for the two "Pixor" animations by Theo Engell-Nielsen and others.
Related pages can be found at the DOG
downloads page (especially noteworthy are the design notes about Heaven
Seven and Sonnet;
also, definitely check out the amazing Tube
demo, a 256 byte ray tracer).
- Real-Time Shadows, March 2001, presented
at GDC 2001. An hour-long lecture by
Tomas Möller and me, summing up shadowing techniques which can be used
for dynamic scenes at interactive rates. There are notes for some of the slides,
which consists of text slides cut from the final talk (mostly implementation
notes and additional technique info).
- Stopping Pipeline Starvation, July
2000, presented at SIGGRAPH 2000 in Course 43, Aggressive Performance Optimizations
for 3D Graphics. Some notes on trends, LODs, and simplification. My favorite
slide is from John Poulton at UNC, showing the faster than Moore's Law speed
increase of graphics acceleration hardware.
- Is the Hardware Z-Buffer Doomed?,
January 2000, STC talk at Cornell. Flaws and solutions to Z-Buffer shortcomings.
I like the "look at all the buffers" slide in this one.
Publications
You could check my listing at the ACM Digital Library.
- Real-Time Rendering, 3rd edition,
by Tomas Möller, Eric Haines, and Naty Hoffman, published by A.K. Peters, 1045 pages,
July 2008, ISBN 978-1-56881-424-7. A mirror for this site is http://www.realtimerendering.com
- "An Introductory Tour of Interactive Rendering", Eric Haines, IEEE Computer Graphics and Applications, v. 26, no. 1, Jan./Feb. 2006, pp. 76-87. Abstract: The past decade has seen major improvements--in both speed and quality--in the area of interactive rendering. The focus of this article is on the evolution of the consumer-level personal graphics processor, since this is now the standard platform for most researchers developing new algorithms in the field. Instead of a survey approach covering all topics, this article covers the basics and then provides a tour of some parts the field. The goals are a firm understanding of what newer graphics processors provide and a sense of how different algorithms are developed in response to these capabilities. IEEE CG&A article link.
- "Soft Planar Shadows Using Plateaus",
Eric Haines, journal of graphics tools, v. 6,
no. 1, 2001, p. 19-27. I decided to
make this second draft available, since I briefly cover the algorithm at our
GDC lecture. There are also some color comparison
images and the abstract available.
- Ray Tracing News,
ed. Eric Haines. I have compiled articles related to ray tracing and rendering
in general since 1987 and put them here. The collection is indexed
by category. There is also a text
archive of the issues, useful for doing grep or find-in-files on.
- "Shaft Culling
Tool," Eric Haines, journal of graphics tools, v. 5,
no. 1, 2000, p. 23-26. Efficient, compact code for generating and testing
3D shafts. A shaft is the volume between two axis-aligned bounding boxes.
This algorithm quickly forms this volume and efficiently tests boxes and spheres
against it. It's handy for culling out things between a light source and a
ground plane, for example. The abstract
and code are also online.
- "Triangle Intersection Tests," Eric Haines and Tomas Möller, Dr.
Dobb's Journal, August 2000, code
and listings online.
- "Fast, Low Memory Z-Buffering when Performing Medium-Quality Rendering,"
Eric Haines and Steven Worley, journal of graphics tools, v. 1, no.
3, 1996, p. 1-5. The abstract
is available online.
- "Point in Polygon Strategies," Eric Haines, Graphics Gems IV,
ed. Paul Heckbert, Academic Press, San Diego, 1994, p. 24-46. Various
methods for testing whether a point is inside a polygon. Code available online
in the Graphics Gems Repository;
note that code has a newer test (CrossingsMultiply) which is particularly
fast on Intel (slow divide) architectures.
- "Shaft Culling for Efficient Ray-Traced Radiosity," Eric A. Haines
and John R. Wallace, Photorealistic Rendering in Computer Graphics (Proceedings
of the Second Eurographics Workshop on Rendering), Springer-Verlag, New
York, 1994, p.122-138. Also in SIGGRAPH '91 Frontiers in Rendering course
notes. Computing the amount two objects see each other can be approximated
with ray tracing. By forming a tight polyhedral volume around the two objects
and quickly comparing it to a bounding volume hierarchy, we generate a reusable
candidate set of objects and bounding volumes to test with a set of rays.
- "Efficiency Improvements for Hierarchy Traversal," Eric Haines,
Graphics Gems II, ed. James Arvo, Academic Press, San Diego, 1991,
p. 267-273. Expansion of parts of the "Tracing Tricks" article.
- "Radiosity Bibliography," Eric Haines, in Global Illumination
Algorithms, Donald P. Greenberg and Francois Sillion, Eurographics Technical
report EG 91 TN, Eurographics Association, Aire-la-Ville, Switzerland, 1991.
This bibliography is now maintained (and vastly expanded) by Ian Ashdown and
is available online (follow the resources
link).
- "Ronchamp: A Case Study for Radiosity,"
Eric Haines, SIGGRAPH '91 Frontiers in Rendering course notes, July
1991. Discusses practical meshing, energy balance, sampling, and display problems
when using meshed radiosity. Text is available online in TROFF
format.
- "Beams O' Light: Confessions of a Hacker,"
Eric Haines, SIGGRAPH '91 Frontiers in Rendering course notes, July
1991. Discusses using monte carlo techniques and ray tracing to create atmospheric
volume effects. Technique used in The Key is Light film to create the
dusty shafts of light in the church. Text is available online in TROFF
format.
- "Fast Ray-Convex Polyhedron Intersection", Eric Haines, Graphics
Gems II, ed. James Arvo, Academic Press, San Diego, 1991, p. 247-250 and
code. Essentially quickly clipping a ray against the set of planes defining
the polyhedron. Code available online in the Graphics
Gems Repository.
- "A Ray Tracing Algorithm for Progressive Radiosity," John R. Wallace,
Kells A. Elmquist, Eric A. Haines, Computer Graphics (SIGGRAPH '89 Proceedings),
v. 23, no. 3, July 1989, p. 315-24. Occlusion testing for meshed radiosity
can be done with ray tracing. Further discussion on the topic is available
in The
Ray Tracing News, v. 2, no. 6.
- "Tracing Tricks," Eric A. Haines, SIGGRAPH '89 Introduction
to Ray Tracing course notes, July 1989. Various efficiency scheme, spline
surface intersection, and ambient lighting tricks. Reprinted in The
Ray Tracing News, v. 2, no. 8.
- "A Proposal for Standard Graphics Environments," Eric Haines,
IEEE Computer Graphics and Applications, v. 7, no. 11, Nov. 1987, p.
3-5. Presentation of a set of programs which generate sets of standard scenes
for testing ray tracing efficiency schemes. The SPD
software package discussed is available online and is still being expanded
(e.g. the famous teapot has been added, and the SPD now exports to many different
file formats).
- "Essential Ray Tracing Algorithms," Eric Haines, An Introduction
to Ray Tracing, ed. Andrew Glassner, Academic Press, London, 1989, p.
33-77. Ray/object intersections and mappings, including ray/sphere, polygon,
box, and quadrics. Some of the material in this and other chapters of this
book is available at the SIGGRAPH
HyperGraph web site.
- "Ray Tracing Bibliography," Paul S. Heckbert and Eric Haines,
An Introduction to Ray Tracing, ed. Andrew Glassner, Academic Press,
London, 1989, p. 295-303. I currently maintain this free
online bibliography.
- "The Light Buffer: A Ray Tracer Shadow Testing Accelerator,"
Eric A. Haines, Donald P. Greenberg, IEEE Computer Graphics and Applications,
v. 6, no. 9, Sept. 1986, p. 6-16. The basic ideas presented are classifying
objects from the light's viewpoint, and caching shadowing objects. The classification
scheme uses a modified z-buffer to create lists of objects in sorted order
for each "pixel" the light sees and determining depths beyond which
no light passes. The other technique presented is caching the object that
was last intersected by a shadow ray and immediately testing this object for
the next shadow ray for the same light at the same location in the ray tree.
Shadow caching is simple and applicable to almost any ray tracer. Dieter Bayer
implemented the light
buffer for POV-Ray.
- The Light Buffer: A Ray Tracer Shadow Testing Accelerator, Eric A.
Haines, Masters Thesis, Program of Computer Graphics, Cornell University,
Jan. 1986.
Here are a variety of images I've made or was involved with.
Click on a thumbnail to see the full-sized version.
My
single pass plateaus shadow algorithm compared to Heckbert and Herf's multipass
(256 passes in this case) planar shadow algorithm. Read
the paper.
For the 25th anniversary of the
Program of Computer Graphics
at Cornell, I made a
photomosaic of Don Greenberg out of students,
teachers, and staff who had been at the lab over the years.
I worked
on the renderers and ray tracer for TriSpectives;
see their pages for many more images. The ray tracer was nothing
special. It used a hierarchy of grids efficiency scheme,
except that it was integrated into the hidden surface renderers
to be used on demand - this makes rendering faster than pure ray tracing.
Such a rendering system can also be more accurate; subpixel rendering using an A-buffer is usually
better than adaptive subsampled eye-ray ray tracing, because small features are caught
more often. For example, rendering the spokes of a bicycle wheel can be fully missed by ray tracers, while 4x4 or 8x8
A-buffering can catch these.
Click on the image
to see renderings of a set of 3D models from one of the TriGallery
collections. Most of the jewelry models here were created by Nancy
Heinz.
I
made the interlinked rings image for Zap Andersson
on the occasion of his wedding. The image is interesting technically
in that it was ray traced, with the shadows computed using adaptive
radiosity meshes. It used bump mapping for the engraving.


These
are some still images of a model of Ronchamp, a chapel designed
by Le Corbusier.
To compare, see photos of Ronchamp,
which include a similar side view
and front view.
The 3D model was created by Paul Boudreau and
Keith Howie. I used the ArtCore radiosity and ray tracing system
we developed for Hewlett-Packard, with some custom add-ins (see
"Confessions of a Hacker"), to
render the model. There are a number of bugs in the images, which
are discussed in
"Ronchamp: A Case Study for Radiosity".
A minute long walkthrough of the church was
shown at the SIGGRAPH '91 film show and is available through SIGGRAPH
publications' Video Review. The February 1991 issue of Scientific
American includes an introductory article about the rendering
techniques used and includes more stills. I believe the SIGGRAPH
'91 art slide set also contains stills.
After
reading Takafumi Saito & Tokiichiro
Takahashi's article on "Comprehensible Rendering of 3-D Shapes,"
in SIGGRAPH '90, I tried some experiments with illustrative rendering
styles. Here are some old renderings (c. 1991) of a soda can model.
The spline surface model is from the University of Utah:
- Can 1 (random noise bit shading)
- Can 2 (vertical lines)
- Can 3 (textured, thick horizontal lines)
- Can 4 (horizontal lines with no noise)
- Can 5 (horizontal lines with noise
added for hatching)
Non-photorealistic rendering is interesting in that it widens
the user's range of expressive styles enormously. See Craig Reynold's NPR page for an excellent collection of links.
For inspiration (and for just a plain good read), get Scott McCloud's
Understanding Comics.
Paul
Haeberli's "Paint by Numbers" was another great article
from SIGGRAPH 1990. It inspired me to write a system based on
his ideas for my Hewlett Packard workstation (why should people
using SGI's have all the fun?). This is a sample creation (made
in about 5 minutes), using the famous Lenna image for its basis.
Nowadays programs like Fractal Painter have taken these sorts
of techniques miles beyond this point.
Here are some images comparing various rendering techniques; feel free to
use them for educational purposes.
-

This
planetary gears assembly is a nice example of what ray tracing
adds to a scene compared to standard hidden surface (z-buffer) rendering.
The reflections are nice enough (though I personally
find too many reflections to be more confusing than none at all).
It's the shadows, for me, that give the 3D cues that make the
image both more realistic and more understandable. Image composition
idea from Paul Booth.
-
This set of three images shows a statue of liberty model
rendered with hidden surface (z-buffer), ray tracing, and radiosity. Note how
the ray trace shadows give the model a reality, but their sharpness can also
detract from understanding (the shadow from the nose, for example: is that a
crease or a shadow?). The meshed radiosity shadows are softer, but there are
gouraud shading artifacts (e.g. on the tablet and at the base at the entryway)
and a loss of shadow detail (the bottom of the robe's shadowed areas are
simplistic). The radiosity solution could be improved some by finer meshing
and by tessellation of complex polygons. Its advantage is, of course, that
once the solution is computed, the set of polygons generated by the process
can be displayed using accelerated Z-buffer hardware and display at near the
same speed (and in some cases faster, since illumination does not have to be
computed for it; balancing this is that there are more polygons to display) as
the original hidden surface model.
-
This set of four images, clockwise from the upper left, shows distributed
ray tracing, traditional ray tracing, radiosity, and hidden surface renderings
of the same scene. Distributed (a.k.a. stochastic) ray tracing gives the truest
image (and is most expensive to compute), traditional ray tracing gives the
usual sharp shadows, and meshed radiosity gives soft shadows everywhere (even
when they should be sharp at the bases of the pipes) and mesh artifacts.
The radiosity rendering could be improved by increasing the mesh resolution
(which is generated with quadtrees and is already fairly fine). Efficiently
creating sharp shadows at the bases of objects while using meshed radiosity is
still an active area of research (see the recent paper by Telea et al.).
-
As above, this set of four images, clockwise from the upper left, shows
distributed ray tracing, traditional ray tracing, radiosity, and hidden
surface renderings. The shadows on the distributed ray trace are noticeably
noisy, even though a large number of shadow rays were shot per pixel.
Traditional ray tracing is sharp shadowed, as usual. Meshed radiosity without
using blending techniques has a few problems besides those detailed above: loss
of specular component (shine), meshed spheres result in visible gap where
spheres are supposed to touch, and gouraud shading artifacts. There is also a
bit of "shadow leak" visible at the base of the closest cone, where the shadowed
samples under the cone affect the shading outside of the cone. All of these
problems are curable; I wish I had rendered this same scene with our final
product. We used the radiosity mesh imposed on the original geometry, combined
with ray tracing the specular components, to solve the first two; we used
surface modeling techniques to determine where the cones touched the floor and
created mesh edges on the floor at these points to avoid shadow leaks.
-
Here is an early radiosity/ray-tracing blend experiment we tried. Clockwise
from left is the hidden surface version, the traditional ray tracer version,
the blend (radiosity shadowing and interreflection and ray traced reflections),
and the pure radiosity version.
There are edge artifacts where the pink sides met the base in all but the ray
traced image due to hidden
surface renderer inaccuracy (this was done in the days before sub-pixel
addressing was available in hardware, so cracking like this was common).
The blend technique was a simple proof of
concept image I made by using the pure radiosity image and adding it to
a ray traced image which had only the reflections and highlight rendered in it.
There are some fairly bad registration problems where the ray traced and
hidden surface images didn't align properly (look at the handle).
We later integrated ray tracing, radiosity and A-buffer renderers into a system
which cleanly and quickly produced such images. Pity it didn't sell...
This
is a camshaft image I rendered with an early version of our ray
tracer, created for Hewlett Packard. It was used in HP advertising
literature, and has the claim to fame of being one
of the physically largest computer graphics images ever displayed, as it was
printed on the side of HP's trade show tractor-trailer. The model was created
by HP's German CAD group (now CoCreate Gmbh).
This
is the version of Sphereflake which was a part of the SIGGRAPH
'87 art show. There are 7381 spheres. The model is from the free
Standard Procedural Databases software package,
available online. The floor plane texture was done with a procedural
function.
Countertop
ray traced image from my thesis used on the Sept. 1986 cover of
IEEE CG&A. The shiny bowl and shadows from ray tracing add
some realism, but the extensive use of texture mapping is what
gives the image most of its visual interest. Cornell's system was great in
that you could see the power of combining a good modeler and good
material designer with powerful rendering algorithms. This image
was produced around mid-1985.
A
ray trace from my Master's Thesis, the image
was produced during December 1984 and used on the SIGGRAPH '86
advanced program. This board position is from Raymond Smullyan's
wonderful The Chess Mysteries of the Arabian Knights, Knopf, 1981.
White has not castled; is the black pawn which started on b7 still on
the board, and if he is, is he still a pawn or promoted?
Eric Haines / erich@acm.org
Last change: August 31, 2008