What is the best method to create this kind of reflection and how to animate it?

Example Image with Caustics

  • 8
    $\begingroup$ These are known as Caustics. Unfortunately these are very computationally expensive to simulate, and cycles isn't very good at it. See blender.stackexchange.com/q/8645/599 and blender.stackexchange.com/q/10434/599. You might want to try a renderer with bi-directional pathtracing and MLT, e.g. luxrender. $\endgroup$
    – gandalf3
    Commented Feb 7, 2015 at 20:10
  • $\begingroup$ A wave modifier can create the ripples in a surface. If it is glossy and lit by a lamp, perhaps they will cast onto another object. Never tried it. $\endgroup$ Commented Feb 7, 2015 at 20:21
  • $\begingroup$ If it's just an effect, rather than physically accurate to the scene, is there a good way to do a procedural caustic texture? $\endgroup$
    – ajwood
    Commented Feb 7, 2015 at 20:30
  • $\begingroup$ There is a great tutorial at blendernation.com/2015/04/27/cycles-water-uber-shader (linked to Cycles | Water Uber Shader). And there has been an approach with Metropolis sampling. $\endgroup$
    – Samoth
    Commented Jan 22, 2016 at 15:35
  • 1
    $\begingroup$ There is now Caustics support since Blender 3.1 $\endgroup$
    – Samoth
    Commented Jun 1, 2022 at 14:40

4 Answers 4


As @gandalf3 mentioned, Cycles is not great at this, if you want to make your render physically accurate; My approach can give you photo realistic results, which are not, however, physically accurate.

Water Movement

You can use a Displace modifier, a Stucci procedural texture and an empty for Texture Coordinates in order to simulate the water movement. Do keep in mind that you'll need a lot of samples in order to get a usable image and a build with the Metropolis patch.

To do this, first add a subdivided plane (Shift + A>Mesh>Plane); then, go to the Modifiers tab in the Properties editor and add a Displace modifier and press the New button to add a new texture. After that, go to the Texture tab and select Stucci; you can later tweak this setting for better results.

enter image description here

Then add a Empty, go back to the Modifiers of the plane and select Object in the drop down list for Texture Coordinates; after that, set the object to be the empty you created earlier.

enter image description here

You can then animate the position and/or rotation of the empty, in order to "animate" the water movement.

Then you can simply add some glossyness to the plane point a lamp at it and render.

Caustics Simulation

A better way is to simulate Throw Patterns on a Spotlight.

Add a Spotlight (Shift + A>Lamp>Spotlight); then add another plane, in the location of the spotlight, and move it down. After that, parent the plane to the spotlight, by selecting the plane first and then the spotlight and pressing Ctrl + P>Offset (Keep Offset). Now, go to the node editor and add a material to the plane, wich looks like the following node tree:

enter image description here

In order to animate the caustics, you can use a Vector Mapping node.

enter image description here

Here, you can animate the X and Y values, for the location, in order to move the caustic pattern around.

Now you can point the spotlight at your objects and git it a test render. Make sure the strength of the spotlight is rather high - I used 2000 - otherwise, you'll not see the light on your object. Also, you can control the softness of the throw pattern by adjusting the distance of the plane to the spotlight or the Size field found in the Lamp tab, on the Properties editor, when the Lamp is selected:

enter image description here

This gives me this result:

enter image description here

  • $\begingroup$ The ocean modifier is also good for this. However this answer doesn't really explain the caustics part (which seems to be the focus of the OP's question) $\endgroup$
    – gandalf3
    Commented Feb 7, 2015 at 20:45
  • $\begingroup$ Thanks for the great solutions man! I've animated the rotation and contrast value of the Voronoi Texture (using Mapping Node and Color Ramp) and the reflections look amazing! $\endgroup$
    – Paul Gonet
    Commented Feb 9, 2015 at 13:23


There is now Caustics support since Blender 3.1


There is a great tutorial at blendernation.com (linked to Cycles | Water Uber Shader). The fake Caustics shader is explained in Part 1 starting from 18:03.


There has been an approach with Metropolis sampling.


There is a new Add-on by Eric Edelo, a "Fast & realistic glass shader for Cycles" called Prism.

PRISM - An advanced & realistic glass shader for cycles

One of its main features are:

Super-fast caustics with colors, dispersion & absorption

Realistic caustics and color dispersion

You have to pay $6.99 for it, but it should close this gap... This Post is not intended to be an advertisment and I'm not affiliated with Blender Market, I just found out about this news on blendernation.com and think, it might help you solve your question.


There is a new "fake" method for the effect you're looking for with Geometry Nodes: https://www.youtube.com/watch?v=C9iQKsShYIM

  • 3
    $\begingroup$ I've been playing around with prism and from why I can tell it mainly does transmissive (refractive) caustics. Not reflective caustics like in the OP's picture. $\endgroup$
    – PGmath
    Commented Mar 18, 2016 at 15:00
  • $\begingroup$ At least they advertise it as that it "lets you build virtually any glass-like material, be it diamonds and gems, water bottles, fluids, lenses, ice and so on". To be honest, I didn't try it out on my own, but it should be possible. And it's probably possible to position a non-rendered (camera ray invisible) mirror below to achieve it... $\endgroup$
    – Samoth
    Commented Mar 18, 2016 at 15:20
  • 4
    $\begingroup$ See my comment on the cgcookie market page you linked, he did confirm that it only produces refractive caustics. $\endgroup$
    – PGmath
    Commented Apr 7, 2016 at 18:39
  • $\begingroup$ Yeah - so it might still be working by only using refractive caustics and a camera-invisible light source from below the water surface to fake this effect using Prism. Should be worth a try. $\endgroup$
    – Samoth
    Commented Apr 8, 2016 at 9:08
  • $\begingroup$ As of today, November 2018, the second and the third ways don't work: Metropolis sampling addon became unmaintained in 2016 (as I understood, the creator had no time/desire to continue it), and the Prism realistic glass addon became unavailable too – the creator removed from Blender Market (it's very sad, I've seen it several months ago and wanted to try when I'll become more skilled with Blender – i.e, now). $\endgroup$
    – AivanF.
    Commented Nov 14, 2018 at 9:45

Is it has to be done in Cycles? If not, check Yafaray as an option for this kind of effects.

The trick in the scene below is the reflecting material which is 50/50 mix of Water and Mirror (shiny diffuse with 0% diffuse and 100% mirror reflection). You can adjust the proportion as per required brightness of the effect.. or should I say "realism"? :-)

It is also quite important to have fairly large caustical photon radius (1 or higher) and quite small number of mixes (50 or less) to produce sharp lines.

Also equally important to create not too sharp and not too soft edges on reflective surface, so carefully watch the number of subdivisions on the surface -- too many of them will blur the result. Yarafay Caustics


To do caustics, I stepped to Luxcorerender and ended up with Appleseed-Render for Blender 2.8.

I did this with Blender 2.8 + Appleseed Render Add-on in a few minutes (just 200 Samples without denoising):

Appleseed Caustic Demo - Blender 2.8 - 200 Samples

Blenderfile: https://drive.google.com/open?id=1dBlC4ulL06xoMoZKYBtfs4DaEb3G3oqF

Add-on (Appleseed beta for Blender 2.8 on Discord server under: #builds): https://forum.appleseedhq.net/t/how-to-download-latest-build/808

The Appleseed-Render is already included in the Add-on

  • 4
    $\begingroup$ While it's correct that LuxCore is able to achieve correct caustics (which was mentioned in comments to the very question 4 years ago) you could include more information about how you did that, at least a screenshot of the scene layout with lights and render settings. This site is not a forum for posting pictures of results $\endgroup$
    – Mr Zak
    Commented Aug 19, 2019 at 18:46
  • 3
    $\begingroup$ OP was using Appleseed for that image (as mentioned), most likely with the help of the following (IMO pretty bad) tutorial: youtube.com/watch?v=G-uV4NPlggo @MrZak $\endgroup$
    – brockmann
    Commented Aug 20, 2019 at 8:28
  • $\begingroup$ Is this a windows-only solution? $\endgroup$ Commented Feb 24, 2020 at 22:16
  • $\begingroup$ It's for Windows, Linux and Mac $\endgroup$ Commented Feb 26, 2020 at 7:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .