Caustics Mapping: An Image-space Technique for Real-time Caustics
Musawir A. Shah, Sumanta Pattanaik
Caustics Mapping is a physically based real-time caustics rendering algorithm. It utilizes the concept
of backward ray-tracing, however it involves no expensive computations that are generally associated with
ray-tracing and other such techniques. The main advantage of caustics mapping is that it is extremely
practical for games and other interactive applications because of its high frame-rates. Furthermore, the
algorithm runs entirely on graphics hardware, which leaves the CPU free for other computation. There is no
pre-computation involved, and therefore fully dynamic geometry, lighting, and viewing directions are supported.
In addition, there is no limitation on the topology of the reciever geometry, i.e., caustics can be formed
on arbitrary surfaces and not just planar ones. Lastly, the caustics mapping algorithm does not hinder the
rendering of other optical phenomenon, such as shadows, and hence can be integrated into current rendering
UPDATE: Two new videos of the updated version of Caustics Mapping have been added. Please scroll to the bottom of the page to the videos section.
UPDATE: The caustics mapping algorithm has
been extended to lift the restriction on geometry tessellation, resulting in
sharper looking caustics. In addition, support for area lights has also been
implemented. Following are some new images taken from the extension work. More
information regarding the extensions will be posted soon.
Microsoft DirectX 9 and HLSL were used to implement caustics mapping on a GeForce 6800 AGP graphics card. All frame rates quoted below are for the GeForce 6800.
Images of the under-water caustics demo using the extended algorithm. Compare
the images with the ones below from the initial implementation.
(Left) Caustics from area light source. This demo runs at a rate of 70 frames per second.
(Right) Light dispersion effect (featuring the UCF Goblin) implemented using the extended algorithm. This is
achieved by using different refractive indices for each color channel.
Images of the Stanford bunny rendered using caustics mapping and Chris Wyman's double surface
refraction. These 1024x768 pixel images were rendered at 31 frames per second
These images are taken from an under-water caustics demo application using our algorithm. The water animation
is performed on the CPU and all the rendering is done on the GPU. This demo runs at 60 fps with the image resolution of
The image to the left shows reflective caustics from a metal ring. Light rays reflect off the concave
interior of the ring and converge at the center to form a cardoid shape. This image was rendered at about 80 fps.
The next image shows how the
caustics mapping algorithm can achieve light diffraction grating effect by using different refractive
indices for each of the three (R,G,B) color channels. This image was rendered at around 60 fps.
This video is captured from the under-water caustics animation demo. A statue of the happy buddha
is placed inside the water to demonstrate that caustics can be formed on complex geometry using our
algorithm. The video file is approximately 5MB.
Refractive Stanford bunny creating caustics and casting shadow. The video file is approximately 5MB.
Video of caustics from a glass sphere. All the refracted light rays converge more or less at the same point, therefore the caustic appears to be a small bright spot on the receiver surface. The video file is approximately 2MB.
[new] Video of the under-water caustics demo using the new updated Caustics Mapping technique.