= What Does It Look Like to be 10 Microns Tall: Difraction and Interference Rendering = == Overview == Classical ray tracing still uses the optics from the 1800s. Every piece of light travels along in a straight line and then is partially absorbed and partially reflect and partially transmitted. This type of model could not explain the phenomena noticed by Young with his [http://en.wikipedia.org/wiki/Double-slit_experiment double slit experiment]. To explain this, wave optics was needed and the rays had to be treated as waves. I intend to bring this type of phenomena to the PBRT ray tracer. == Background == To correctly model all the real world light phenomena we would have to treat all light as waves. Thankfully there is something called [http://en.wikipedia.org/wiki/Huygens'_principle Huygen's Principle]. From the article: “It recognizes that each point of an advancing wave front is in fact the center of a fresh disturbance and the source of a new train of waves; and that the advancing wave as a whole may be regarded as the sum of all the secondary waves arising from points in the medium already traversed.” Under this model, we can simplify the modeling of the wave, using our old classical optics. :) We can trace rays in the world classically, and then when classical optics doesn't hold anymore we can treat any point on the ray as a new source and ray trace accordingly. == Interference == Since we are modeling the rays as waves, they each have a phase associated with them. When two waves of the same phase coincide, they positively interfere and if they have opposite phases then they negatively interfere. There are some excellent pictures of this on [http://en.wikipedia.org/wiki/Interference Wikipedia] http://upload.wikimedia.org/wikipedia/en/f/f1/Wavepanel.png Interference of two circular waves - Wavelength (decreasing bottom to top) and Wave centers distance (increasing to the right). Absolute value snapshots of the (real-valued, scalar) wave field. As time progresses, the wave fronts would move outwards from the two centers, but the dark regions (destructive interference) stay fixed. == Diffraction == Diffraction has been modeled before for surface interactions. This has been used to thin-film phenomena to model [http://www-graphics.stanford.edu/courses/cs348b-competition/cs348b-01/iridescent_butterflies/morpho.html butterfly wings], [http://www-graphics.stanford.edu/courses/cs348b-competition/cs348b-02/igor/ soap bubbles], and [http://www-graphics.stanford.edu/courses/cs348b-competition/cs348b-05/snake/index.html snake] scales to mention a few. I intend to model the diffraction that occurs at edges. This is similar to how sound can bend around walls as well as radio station signals. Again I point to [http://en.wikipedia.org/wiki/Diffraction Wikipedia] for information on this subject. == Implementation == I first intend to model interference of the light waves. I will add a phase parameter that ranges from 0 to 2 PI that represents the waves phase. On any surface intersection I will compute how far the ray has traveled and change its phase accordingly. Each wave will also have to have a wavelength which defines how its phase changes in time as well as its color. I expect to follow the same procedure as some of my colleagues and split every light into a Monte Carlo spectrum emitter and then recombine the light values into their RGB at the end. I only want to start off with a single wavelength of coherent light but intend to model the full visible spectrum. To simulate diffraction, I intend to place a “difractable media” at the points where diffraction will occur. First these will be placed by hand, but might be programatically found if time permits. These will be modeled as PBRT surfaces and when struck will, in accordance with Hyygen's principle, will act as tiny point light sources. == Desired Results == The first result I want to get is an interference patter from a single slit or double slit experiment illuminated with monocromatic laser light. The patter for a single slit diffraction should be a sinc squared function like this: http://upload.wikimedia.org/wikipedia/en/e/e1/Diffraction1.png After getting this working, I intend to model a scene that has very small distances. This might also be achieved by increasing the wavelength of the light (AKA looking with radio waves or another long wavelength EMR spectrum).