stuff I've done and stuff I like

 

Current Interests

November 1, 2024by Eric Haines

It's all about me me me. This page is mostly about my professional interests, newest to oldest, with some hobby bits interspersed. I tend to put graphics-related links on Twitter and blog here. You can also check LinkedIn. Write me at erich@acm.org.

Along with Elena Garces, I'm a Program (aka Papers) Chair for EGSR 2024: July 3-5, Imperial College, London, UK.

I co-edited the book Ray Tracing Gems, released in March 2019. On that site we provide an unofficial version of the free PDF version of the book, one with the errata corrected. Ray Tracing Gems II is now also out, which I helped on in various minor ways (and wrote a short reference article for).

I coauthored Real-Time Rendering, now in its fourth edition, released in 2018. The book's site has and points to all sorts of resources. The portal page sums up what real-time computer graphics resources I use the most. There are also pages on ray tracing and WebGL resources. We also maintain the 3D Object Intersection Page, a handy table of references to algorithms for object/object intersection, and the obscure and entertaining (IMO) Real Artifacts collection. Oh, and a free graphics books list, a recent graphics books list, and a recommended graphics books list.

I help with the free & open-access Journal of Computer Graphics Techniques (JCGT), the successor to the Journal of Graphics Tools (JGT).

Various repositories I maintain: Graphics Gems, Journal of Graphics Tools, and Ray Tracing Gems code repos.

I made a video tutorial for using NVIDIA's free instant-ngp NeRF software to make fly-throughs.

If you're on an iPhone, download this Minecraft model and you'll see it in AR mode. This model is part of my two test scenes in the Universal Scene Description (USD) format. I made them to test viewers for features implemented, to help users understand the UsdPreviewSurface material, and to motivate clearer specification of some material elements.

I co-chaired I3D 2020 and I3D 2021. Lots of the keynotes and talks are online.

Here's a series of seven short talks I made back in 2019 on the basics of ray tracing, a total of about an hour of content.

Sadly now in disrepair, back around 2013 I created and narrated Udacity's free course "Interactive 3D Graphics". Read more about it here. The site is starting to decay (the online exercise system has died), so this page can help you get going. If you don't like video instruction, you can instead download the 800+ pages of text making up the course - scroll down to the "Course Syllabus" section.

I was a section editor for GPU Zen and ShaderX4.

I like Minecraft, and wrote Mineways, a model exporter for the game. Twelve years it, it gets about 200 downloads a day.

Andrew Glassner and I collaborated on T2Z, a little art project using Processing. I also like to keep track of basic resources for 3D printing.

My various other public repositories are here, and include modifiable illusions (see one here) and a simple, flexible tool for checking LaTeX and text files for errors.

I finally made a demo for the demoscene, which was fun to do. The music has serious sync problems, for some reason. Toggling F12 on Windows sometimes helps. Fourth place, woo hoo, and about what it deserved. What's fun is that you can take control of the camera at any point, and change the music played.

Other fun stuff: I now maintain a library box and micro-pantry map for the area where I live, north of Boston. More about this here, as well as a map of farmers markets northwest of Boston. I'm also making a Cottages (and more) of the Berkshires map, and an "interesting things in Somerville MA" map (which got a bit of news coverage here and here). I made some puzzles for Somerville Open Studios 2024.

I have an ancient personal page with book and board game recommendations, plus wildflower, tree, and bird identification programs. These were kinda broken last I looked.

Other me me me: SIGGRAPH and Wikipedia.

People I'm not: the comedian/one-man-band/juggler/stilt-walker, the Nashville songwriter who penned "Moonshine Margaritas" and other tunes, the photographer, the rhythm guitarist with the pop punk band "Real Friends," and the karma-filled Unity developer eric5h5, to name a few.

 

Past Interests

I helped start and worked on the editorial board for many years of the journal of graphics tools. This was a journal dedicated to presenting practical tools and techniques. The web site used to have useful code for some of the articles - sadly, CRC has let this repository founder. The code can still be found via the Way Back Machine.

I created and rarely help maintain the ACM TOG Software Related Tools and Research Resources pages. Mentioned mostly so I can find the links.

The now-slumbering Ray Tracing News contains articles about ray tracing. Nowadays I put my efforts into this page of ray tracing resources. I also once maintained The Realtime Raytracing Realm page of real-time ray tracing demos. Dated now, but some of the demos still astound me (256 byte ray tracer? Gotta love it).

Decades ago I created the Standard Procedural Databases (SPD) software package, which occasionally still gets used for testing ray tracers. It was presented in an IEEE CG&A article in November 1987. Sphereflake, the most popular model of the set, now runs in real time with 48 million spheres.

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.

For some years I ran the Fantasy Graphics League - demented or silly, you decide...

I edited the Ray Tracing News for many years, which grew out of coauthoring An Introduction to Ray Tracing from 1989 (now free to download)

One last thing, from 1987: the Standard Procedural Databases, for testing ray tracers. Since you can scale up the number of primitives in a scene, they're still usable, e.g., here's a bit about Sphereflake.

 
Kind of like me (I'm less blotchy - really - though am certainly noisier):

Eric at SIGGRAPH 2014 by scanfab on Sketchfab

Slide Sets

Feel free to use/copy/modify these slidesets in a reasonable fashion. Talks are listed with most recent first.

 

Publications

You could check my listing at the ACM Digital Library.

  • A Taxonomy of Bidirectional Scattering Distribution Function Lobes for Rendering Engineers by Morgan McGuire, Julie Dorsey, Eric Haines, John F. Hughes, Steve Marschner, Matt Pharr, Peter Shirley. Notable part: in the presentation. Short version: see Figure 1. Finite-valued vs. Impulse (aka perfectly specular). For finite-valued: diffuse vs. glossy, please (or retroreflective, if you must). And Lambertian (aka perfectly diffuse) vs. general diffuse for diffuse surfaces.
  • Ray Tracing Gems, edited by Eric Haines and Tomas Akenine-Möller, 607 pages, from Apress, ISBN-13: 978-1484244265, ISBN-10: 1484244265. Open Access, so free online.
  • Real-Time Rendering, 4th edition, by Tomas Akenine-Möller, Eric Haines, Naty Hoffman, Angelo Pesce, Michał Iwanicki, and Sébastien Hillaire, 1198 pages, from A K Peters/CRC Press, ISBN-13: 978-1138627000, ISBN-10: 1138627003.
  • "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.
  • "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.
  • "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) that is often the fastest in its class.
  • "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 was vastly expanded by Ian Ashdown and is available online. Background article here.
  • "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.
  • "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.
  • "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.
  • "Ray Tracing Bibliography," Paul S. Heckbert and Eric Haines, An Introduction to Ray Tracing, ed. Andrew Glassner, Academic Press, London, 1989, p. 295-303. We have made this book free online.
  • "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, Master's Thesis, Program of Computer Graphics, Cornell University, Jan. 1986.
 

Imagery

Here are a variety of images I've made or was involved with. Click on a thumbnail to see the full-sized version or try the demo.

Sphereflake Sphereflake in real-time on an NVIDIA Titan V graphics card using DXR. See the real-time ray tracing gallery for a variety of shots and more information.

LMV, the Large Model Viewer, based on three.js. Used for displaying mechanical and architectural models from Fusion 360, Inventor, Revit, and other sources. I helped improve and maintain it. Sadly, site's gone...

DPG For the 25th anniversary of the Program of Computer Graphics at Cornell in 1998, I made a photomosaic of Don Greenberg out of students, teachers, and staff who had been at the lab over the years. Nineteen years later, in 2017, I made another one, adding a 3D viewer program for the fun of it. Find the earlier photo of Don in it and zoom in for a bit of inceptionism. Also, here's one I made for Carl Bass, for his going-away party at Autodesk.

T2Z T2Z stands for "time to z-axis," a little art project Andrew Glassner and I collaborated on and taught at The Studio at SIGGRAPH 2016. Take animations, stack the frames, make an isosurface, then 3D print or whatever else strikes your fancy. A great excuse for me to play with Processing and take several classes at Artisan's Asylum.

MOOC This is one of the demos from the free Interactive 3D Graphics MOOC I created for Udacity. I particularly like this demo, as it shows the series of matrices used in the rendering pipeline and lets the student see how various operations affect each.

My free Mineways software exports Minecraft models for display or 3D printing, allowing easy reuse or upload to SketchFab and other services. First released in 2011, as of 2017 the program is downloaded about 500 times a day.

OGS For many years I worked on a team building the One Graphics System. It is used by Maya, 3DS MAX, AutoCAD, Inventor, Fusion 360, Revit, and other Autodesk products for interactive display. For example, the NPR styles in 3DS MAX are performed by code I helped develop for OGS.

StudiodeskPrior to that I helped create and develop Autodesk's Architectural Studio product, a collaborative design tool written in Java. It built on the idea of a principal architect's use of sketch paper during conceptual design, providing tools such as a simplified 3D modeler and vector-based 2D drawing tools combined with image import and compositing.

plateaus My single pass plateaus shadow algorithm compared to Heckbert and Herf's multipass (256 passes in this case) planar shadow algorithm. Developed for Architectural Studio. Read the paper.

jewelry 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.

linked rings 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.

Ronchamp side viewRonchamp front viewRonchamp pew view 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. One image was used for the cover of the book Radiosity and Realistic Image Synthesis (now free to download).

Scientific American Feb. 1991 The February 1991 issue of Scientific American includes an introductory article about the rendering techniques used and includes more stills.

can 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.

Lenna 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.

  • RT planetary gearsZ buffer planetary gears 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). 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.
  • Statue of Liberty  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 area is 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.
  • Pipes casting shadows  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 reasonable).
  • Spheres casting shadows  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 many 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.
  • Jig  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...

camshaft 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).

Sphereflake 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 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.

chessboard A ray trace from my Master's Thesis, the image was produced during December 1984 and used on the SIGGRAPH '86 advanced program, with the purposely pretentious title "Homo Ludens." 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? Original image here, which I stupidly added a copyright notice to. Bonnie Mitchell kindly cleaned that off with a magic eraser and then up-rezzed it with Gigapixel.