Cycles caustics not converging from glossy surface

So I found something out today, Cycles isn’t as amazing as I thought it was. I mean it’s still great and has it’s place, but isn’t the silver bullet I’d incorrectly assumed it was.

Anyway, enough crap, check this out:


Now the rest of you may already know this and I’m behind the times, but I was surprised to find that cycles didn’t correctly reflect light off a glossy surface like I assumed it should. This is using a light source (set to Sun), not mesh emitter (yes I know the various issues with lights vs emitters and infinitely small light sources).

So initially I thought cycles wasn’t doing any caustics at all (as there weren’t even any fireflies which usually highlights a difficult-to-converge scene) but it turns out it was - except the tiny point light source was so small it couldn’t converge any of it (or at least very very little). Increasing the light size begins to show caustics at the cost of having blurry shadows. So you can’t have your cake and eat it too. Unless your cake is LuxRender, in which case you can.

Anyways, just thought I’d share. I must learn more about LuxRender to make a per-case basis as to what renderer I need for each job…

From the technical perspective, that’s to be expected with Unidirectional Pathtracing Engines like Cycles. Such “light centered” effects are easier to achieve in Luxrender, since it has bidirectional pathtracing and other variants.

but there is a way to increase the caustic effect using the lightpath node!
not the best way but it can compensate a little !

happy cycles

It’s to do with unidirectional path-tracing, but you can help the caustic effects converge faster by making use of the ‘filter glossy’ setting (values of 0.20 to 0.24 tend to work well).

Even then, the caustics will need a lot of samples to converge, and Cycles won’t resolve them real quickly until it gets bidirectional pathtracing and/or metropolis sampling.

You are probably already using Multi-importance Sampling. If not, checking this option can help the resolution speed of light sources that seem to be taking a long time to denoise. Although at first it might seem to be noisier.
I had some surprising luck with duplicating a light and leaving it exactly on the other one and reducing their total emission. Not sure that the reason I think it helped is correct, but it did clean up.

I also forgot to mention, I have found some evidence from my own tests that switching the feature-set to ‘experimental’ and using the correlated multi-jitter sampler may allow for better convergence of caustics because the sample distribution is better. Do note though that they will still require a lot more samples than if you used Luxrender with bidirectional and metropolis sampling, but every little bit helps.

Thanks guys, I tried all your suggestions and it at least shows something now. I was unaware of the filter glossy option, I’ve always just used clamp to try and fix noise (I’d rather not as it sucks the life out of the image). So here is the latest attempt at 1000 samples:


1 Like