For my final project, I decided to render a realistic image of a CD. Although iridescent colors, such as those observed on various types of butterflies' wings, have been explored before, little work seems to exist on rendering the rainbow-like strips on CDs we are so familiar with. After a lot of searching, I only found two papers that addressed the problem. The first was a SIGGRAPH'99 paper by Stam , and the second by Sun et al.  provided a more accurate model of the pits that appear on the microscopic level of the surface of a CD and, therefore, achieved more realistic results. I used the second paper as a close guide.
I modeled the CD as a thin cylinder consisting of four concentric circles outlining the grip, data, and hub surface areas of a CD. All surfaces were treated as diffuse, and ray interactions in the data area were analyzed further to create the rainbow-like strips. The data area contains tiny pits going around in a spiral as shown below:
Because the pits are so close together, Sun et al. ignore the spiral and assume they are on concentric tracks. The tracks are then modeled as a sequence of spheres of diameter 300nm (length of one pit) and are shaded where a pit exists and unshaded otherwise. The small sizes of the spheres are comparable to the wavelengths of light and so cause diffraction. Sun et al. provide an equation that relates the position of a point light source, the eye, and the intersection point to integer multiples of wavelengths that will react at the intersection point.
I used the miro ray tracer we have been building previously with very few modifications. When a ray intersects the data region of the disc, the hit color is determined based on the diffuse color of the region and the spectral power distribution (SPD) of the reflected ray. An SPD is a function S(L) that gives the power (energy/time) of light at a wavelength L. I modeled my point light source as a tungsten bulb, which has an SPD that increases linearly. At the intersection location, the light source SPD is multiplied by a factor depending on how much constructive interference occurs at that point and the RGB color observed is calculated by converting the resulting SPD to CIE XYZ color space and then RGB space.
I rendered several hundred images by moving the light source around a circle with a fixed viewpoint location. The animation can be viewed as animated GIF and a DivX movie. The iridescent spikes on the CD in real life, and in my rendering, are diagonal to the illuminating and viewing planes. If you look at the movies, notice how the patterns virtually disappear as the light source moves behind the camera.
Here's another animation that moves the camera from beside the CD on the plane to directly above the CD in an arc motion. The patterns also disappear when the camera is directly above the disc since the camera and light source are close together.
 J. Stam. Diffraction Shaders. Computer
Graphics, Proc. of ACM SIGGRAPH 99, ACM Press, New York, 1999, pp. 101-110.
 Y. Sun, D. Fracchia, M. Drew, T. Calvert. Rendering iridescent colors of optical disks. 11th EUROGRAPHICS Workshop on Rendering (EGRW), pp. 341–352, 2000.