Caustics represents some of the most visually striking patterns of light in
nature. Caustics are formed by light that is reflected or transmitted
by a number of specular surfaces before interacting with a diffuse
surface. Examples of caustics are the light patterns on the bottom
of a swimming pool and light focused onto a table through a glass
Caustics are impossible to simulate using radiosity or
ray tracing but very easy with photon mapping :-) A photon map
is build by tracing photons from the light source into the scene
and storing these as they interact with the surfaces in the model.
A more detailed description can be found in
After noticing the nice caustic through a glass of cognac one late
evening I decided to simulate it. Not having a 3d-model of a cognac
glass (or a modeling package) I ended up writing a program that would
take a number of sample points a generate a smooth spline curve, which
was then used to generate a surface of revolution. This image
was rendered on a P-90 in 4 hours using 64 samples per pixel, and
something around 200.000 photons for the caustic. Notice the
detail in the caustic as well as the smoothly connected caustic & shadow
boundary. The high number of pixel-samples was necessary to reduce
noise in the depth-of-field simulation.
Try illuminating a metalring on a table and you will see a nice cardioid
caustic on the table. This shape is easy to describe mathematically and
it is often used to illustrate caustics. It is created by light reflected
by the inner side of the cylinder before being focused onto the table.
A prism with dispersion - ie. wavelength dependent refraction.
Notice the colors in the caustics.
1024x768 with 4 samples per pixel.
Rendering time was 32 seconds on a Dual-PII-400MHz Linux-PC.
A caustic from a glass sphere
This is a simple example of a caustic created as light shines through a glass
sphere. This caustic in the image is a direct visualization of the photon map
which in this case uses approx. 600KB of memory (corresponding to 30000 photons).
The image was rendered in 5 minuttes on a P-100.
A caustic from a sphereflake on a fractal landscape
Since the photon map can handle procedurally defined objects it
is possible to have caustics from a sphereflake onto a fractal landscape.
Both objects are procedurally defined - no explicit geometry is ever
The image shows three coloured caustics created as light from a red, green
and a blue light source shines through a glass sphereflake.
The image was rendered using 4 samples per pixel and the rendering time
on a 90Mhz Pentium based Linux machine was approx. 30 minutes. The
caustic was created using approx. 350.000 photons (7Mb of memory).
A glass cognac on a fractal surface
This is a glass of cognac on a sand-surface. The sand-surface is a
fractal surface approximated by 2 million triangles on which a sand
texture has been created. Notice the caustic on the sand. Notice
also that the reflection model for the sand is directional diffuse -
this image demonstrates how photon maps can render caustics on
non Lambertian surfaces.
A closeup of the caustic on the fractal surface
This is a closeup of the caustic on the previous image.
The cognac glass was rendered using our the two-pass global illumination
method. Notice the caustic on the table.
In this image depth of field was simulated to give extra realism - notice
how the backgound is blurred since it is out of focus.
Another view of the cognac glass
This view of the cognac glass was rendered using 16 samples per pixel
and the rendering time was approx. 1 hour and 30 minutes on a P-90.
Yet another view of the cognac glass
Yes, I enjoy cognac :-)
Caustics on curved surfaces
This images illustrates caustics on a curved (bumpy) surface.
This can in general only be done using the photon map! Unless the specular
surface is simple and backwards ray tracing is possible.
The image was rendered without any parameter adjustment and the
rendering time on a P-90 was 72 seconds - 47897 photons were used to simulate
Last update: October 7, 2002