Fake Caustics: A Novel Approach

I have been pondering the difficulties of creating attractive fake caustics, and have come up with a solution.

The below image was rendered with 512 samples, no de-noising, and in under 10 minutes on a Macbook Air. Improves to no noticeable noise with a bit of post-processing.



Here’s the nodes!

Looks good… can you put somewhere a simple file containing the shader so that we may inspect it actually?

FakeCausticsV2.blend (253 KB)
Sure!

interesting
but this works only with white light and does not really make color caustic!

can you try to explain the algo use here

thanks
happy cl

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.