The algorithm that I’m using is a pretty simple one based pretty tightly on the other fake caustic shading techniques out there. The main difference is that it uses the reflection texture coordinate instead of the normal texture coordinate, and that it uses hair shaders instead of (or in addition to) the transparent shader.
I added some distance math to make it look better, so that it gets brighter far away, and a little bit brighter up close (so that it doesn’t seem unnaturally dark where the objects rest on the base mesh). Other than that, I also made sharp bits brighter.
The main advantage of using this method is that it supports reflective caustics (at all), and that refractive caustics can go outside the shadow of the mesh.
You can easily add fake absorption using the Ray Length method (color: Mix => Multiply)
and I’m still trying to figure out caustic dispersion.
It should still work with colored light: it’s not an emission object, but it uses (the cheap version of) diffuse and translucent surfaces.