I am not looking for textbooks and related how-tos, though I'm sure they can color the answer.

I'd like to understand how we handle the rendering of caustic effects — and particularly time-saving models, as different from physical simulation.


1 Answer 1


For offline rendering, caustics and dispersion effects (different colors of light separating, as in a prism) are usually calculated using some form of photon mapping. That's a fairly expensive technique, even by the standards of offline rendering, and it falls more under the "physical simulation" side of things.

If you're looking for more approximate techniques suitable for real-time rendering, Chris Wyman's papers are a good place to look. He wrote several papers on caustics between 2006 and 2009. The one to start with is Interactive Image-Space Techniques for Approximating Caustics (I3D 2006), #25 on that page. This paper re-uses a GPU refraction rendering technique he developed earlier, #28 on that page, so you'll want to look at that as well for background. Later papers build on these two.

The basic idea of these papers is to use GPU rasterization to perform a limited, approximate analogue of photon mapping. The scene is rendered from the light's point of view, similar to a shadow map, and each pixel is treated as a photon; its refraction through transparent objects is calculated approximately (usually considering only 1 or 2 layers of refraction), and its final location is stored in a texture. Then, one can render each photon as a small splat into a "caustic map", which finally gets projected onto the scene, similar to a shadow map.

  • $\begingroup$ That's interesting, though I see from the photon-mapping link that what I'm asking about is how to approach Spectral Rendering. Do you think it's reasonable to change the question so far as to update it with this term? I still think I'm asking the same thing. $\endgroup$ Commented Dec 28, 2015 at 23:14
  • $\begingroup$ @NewAlexandria Hmm...I interpreted it as being primarily about caustics. If you're really asking about spectral rendering, that's a different question than the one I answered. :) I think it wouldn't be a bad idea to post a new question, if you want to. Maybe edit this one to be specifically about caustics? $\endgroup$ Commented Dec 29, 2015 at 4:13
  • $\begingroup$ Thanks, I did, here $\endgroup$ Commented Dec 29, 2015 at 20:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.