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 systems easily.

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 640x480 pixels.

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.
[new] Video of the light dispersion demo.

Demo Executables

To be added.


Musawir A. Shah, Jaakko Konttinen, Sumanta Pattanaik. "Caustics Mapping: An Image-space Technique for Real-time Caustics" To appear in IEEE Transactions on Visualization and Computer Graphics (TVCG)

Musawir A. Shah and Sumanta Pattanaik. "Caustics Mapping: An Image-space Technique for Real-time Caustics." Technical Report, School of Engineering and Computer Science, University of Central Florida, CS TR 50-07, 07/29/2005 (Submitted for Publication)