Are caustics supposed to behave like this, or is this a bug?

Logically it would seem that altering the roughness of a material would affect the way light is scattered through it, softening the caustics within it’s shadow or something, but in Cycles that doesn’t seem to be the case.

Not only do both shadows look the same, but when a difference blend mode is applied you can see that there is absolutely no difference in the shadows between a perfectly clear glass monkey, and a glass monkey with 50% roughness.

Is this a bug, or should shadows behave like this? If it is a bug, what is a good title I can use to report it?

Cycles is a uni-directional path-tracing renderer which is unfortunately really bad at caustics. Pretty much any other renderer will be better if accurate caustics is your goal.

2 Likes

Agree caustics is one of cycle weakness and often i have better luck faking it!

I fake it using a transparency shader (refraction, part of glass, opaque to shadows, requires caustics and tons and tons of samples to see); so isShadowRay used to shader mix between regular shader and transparency shader. However that only makes the shadows equally transparent. So I use fresnel to set its color. I also use inverted IOR for the backface, and run it through a power math node to control its thickness where the shadow is opaque. I don’t use it to fake caustics, only darkening by shadows.

I guess it’s because of the defaults for indirect light clamping and filter glossy (in render properties -> light paths). Filter glossy smoothes the caustics a lot, so you won’t really see any effect with rough glass anymore.

Set both to 0 and compare glass/rough glass caustics, you should see a difference. You’ll get a lot of noise and fireflies though, because, as mentioned before, Cycles isn’t the best choice for caustics.

Here’s some info about clamp indirect and filter glossy.

To make decent caustics, I would switch to Luxrender.

2 Likes

Pat,

Have you ever made any models that involve scattered light after reflection from a mirrored surface (or refraction through rough glass, as seems to be Zach’s emphasis)?

I am looking at volumetric scatter after light is reflected from irregular, mirrored surfaces, but can’t seem to get sensible results. I could sure use some guidance on how that might be done with Luxrender, if you’ve got a moment to share on the topic.

LuxRender can certainly help you out with that.
I compiled a small example for you below, you’ll need our latest v2.2beta4 with Blender 2.80 to open it, which you can download here: https://github.com/LuxCoreRender/BlendLuxCore/releases

scattered_light_demo.blend (3.0 MB)
The scene shows a red sphere with smooth glass material, yellow sphere with rough glass material, and a green mirror.

2 Likes

B.Y.O.B., this is great. So kind of you to speak to my question in this thread. And I’m not just saying that to ingratiate myself. I appreciate such a thoughtful reply, after struggling with the topic and even posting a thread on this, appealing for guidance. I hope others find it germane to the OP. I surely appreciate it.

Thanks everyone for the replies. I’ve used LuxRender before and really liked it, so I guess if I ever need caustics that will be my go to.