Diffraction Shaders

This work was motivated by the desire to understand physics-based illumination models. Back when I was at INRIA for my postdoc I did some work on synthesizing caustics using FFTs and the wave theory of light, this is how I first got in contact with the wave theory of light. Then a year after I was  re-reading Kajiya's 1985 SIGGRAPH paper on rendering anisotropic surfaces. In that paper he considers the Kirchhoff integral. At some point this integral looks just like a Fourier transform and I was surprised that Kajiya did not use this fact. So I got pretty excited and started to see if I could simplify matters using a Fourier transform. It turned out that this is possible and I quickly derived a general formula that relates the spectral density of the miscrosurface to the reflected field. I assumed that this was a well known result in optics/rendering. However, after spending hours at the University of Washington's library I was surprised that I couldn't find this simple result in any of the standard publications. For example, Beckmann & Spizichino's monograph only considers a special case for isotropic surfaces using an infinite sums which come from a Taylor exapnsion of the exponential function. All this happened a couple of weeks before SIGGRAPH'97 in LA. It just so happened that the Cornell graphics group had a special session on rendering. During this session Ken Torrance listed an "anisotropic physics-based reflection model" as one of the open problems. That convinced me to write my result up as a paper. Writing up the paper turned up to be a lot harder than I expected. This is mainly due to the fact that the relation between Maxwell's equations and Radiative Transfer is far from straightforward. Usually one can simply define the intensity as the square amplitude of the wave (power). But radiance is a quantity which is both localized in space and direction. This is not the case for light waves. Think of the two extremes a planar wave travelling in a particular direction which isn't  localized in space and a spherical source which is localized in space but not in direction. At any rate I am only scratching the surface here. For a good introduction to this problem see: E. Wolf, "Coherence and Radiometry", Journal of the Optical Society of America", Vol. 68(1), pp. 7-17 (January 1978). I probably wasted too much time on this problem. The first version of this paper was rejected for SIGGRAPH'98. The reviews were very informative and led me to derive the diffraction shader and to focus the paper more on practial applications to avoid the "you did not compare it to experiment" kind of criticism. This seemed to have worked out since the paper got accepted for SIGGRAPH'99.

More information on the technique can be found in my SIGGRAPH'99 paper. A more user friendly version of the material are the slides from my talk at SIGGRAPH'99 where I tried to cut down on the amount of nasty mathematics. I have given this talk two more times, once at the workshop on appearance at NIST (where they call me Joe and not Jos) and at a course at SIGGRAPH'2001.The Diffraction Shader itself is available for free to anyone who owns our MAYA animation software by going to our company's web site and following the "community" and "Download" links. The standard anisotropic shader in MAYA is also an implementation of my model. I also implemented a simplified version of the shader as a vertex program. You can find a description of this implementation and the demo by following this link.