Ray Tracer

Michael Frank Deering: Software: Ray Tracer

The Pre-History

While I was in high school I was impressed by an article about 3D computer graphics published in Scientific American by ? in 197?. Unfortunately I did not understand the algorithm they used to generate the 3D images, so I wrote my own, and continued to develop it over many years. Later I learned that what I had written was a ray-tracer. While ray-tracing was popularized in the SIGGRAPH community by the 1980 ACM paper by Turner Whitted and the 1980 SIGGRAPH paper by Steve Rubin (who I would later work with starting a year later at Schlumberger) and Turner Whitted, the concept was known before then, and the “first” software ray-tracers are now generally acknowledged to have been written in the 1960′s, and re-invented many times by since many different people.

The What

My ray-tracer was based on oct-trees, and in one version, when you hit the lowest bit it would represent the presence or absence of a stone cube. With an auto-grout routine, this meant that you could build anything you wanted, so long as it looked like a stone building.

I also considered real-time hardware implementations of my ray-tracer in the late 1970′s. Other than a earlier 2D sprite engine, this was my earliest 3D graphics hardware design. Now, 30 years later, people are starting to consider real-time (as opposed to some commercialized batch) rendering chips based on ray-tracing. (This was a common discussion topic at the Eurographics/ACM-SIGGRAPH graphics hardware conference in 2005.)

Humorous Rendering Bug

Graphics rendering bugs can sometimes be quite funny. One day rather than handing a 3D voxel file to my ray-tracer, I accidentally handed it its own binary executable file. Thus all the binary VAX instructions and C symbol table data became stone cubes in a rendering – I ray-traced the a.out file of the ray-tracer. There is some interesting structure here, and I know I kept a copy of the image around somewhere, and once I find it I’ll insert a copy here.

Positive Influence

No, my early ray-tracer had nearly no influence on other people or the industry. But having developed a complete implantable theory of 3D computer graphics from scratch by myself before I took my first computer graphics course (from Nelson Max) meant that in addition to the “standard” way of doing things, I always knew another way to think about rendering. These different points of view helped my in creating a number of techniques in computer graphics hardware and software over the years. For just one example, because the view model of my ray-tracer was so different than the normal 4×4 projective viewing matrix, when I was able to understand how both could be “correct” this more general understanding eventually helped lead me to the more general viewing model constructed forĀ Java 3D.

Lack of Publications

I never published anything on my ray-tracer, having generally lost interest of it not too long after the Whitted paper. However I did render a number of images with it over the years that some people remember, and I may eventually get some of them off tape and linked here. I did use the ray-tracer to draw some of the illustrations used in my 1981 Ph.D. thesis. There also were some movie loops, but I don’t know if any of those survived.