How to render caustics with the new caustics solver?

Starting with Corona Renderer 4, a new and vastly improved caustics solver is available, enabling effortless use of caustics in your scenes without having to use any additional experimental engines or composite the results into images in post-production (unless you need or want to, that is). 

The caustics effect is now calculated together with the final rendering and is much more accurate than ever before, let alone faster.


Caustics solver features

Since the new caustics solver is a one-click solution, you do not have to worry about anything more than your materials in order to get plausible caustics effects. 

At the moment, the caustics solver supports the following features:


  • Dispersion in refractive materials (useful for diamonds, crystals, etc).

  • Motion blur (the caustics effect will motion-blur correctly).

  • Separate render element for caustics effects - CShading_Caustics - allows adjusting and compositing the caustics effects in post.

  • Caustics work with both UHD Cache and Path Tracing.

  • Caustics from each light source will also be correctly adjusted by LightMix


There are, however, also currently some limitations:


  • Caustics may render slower/differently when using render regions (this will be improved).
  • One very strong light may reduce caustics from weaker lights (will be improved).

  • Caustics which are close to the camera may appear faster and have better quality than the caustics farther away from the camera (this will be improved).
  • Caustics may render slowly/with worse quality in very large scenes (e.g. rendering a glass of water in the middle of a 1x1 km exterior scene - this will be improved). 
  • Caustics inside volumes are still calculated the old way and are not accelerated by the new solver.

  • Refractive caustics still require having caustics enabled in the material. Reflective caustics do not.

  • Only Corona Lights will produce caustics (standard and photometric Max lights are not supported).

  • Each frame in an animation (or even rendering the same frame twice) will have a different pattern in the noise. To avoid flickering in animations, you will have to render a significant number of passes to ensure the solution has converged. 
  • Max sample intensity value may not affect caustics at all, or may affect them only when using extremely low values (such as 0,01). Generally, when using caustics, MSI should be left at the default value of 20.



How to render caustics?

1. Enabling the caustic solver

The new caustics solver can be enabled globally for a scene using just a single checkbox in the Performance tab of Render Setup:

Once the new caustics solver is enabled, Corona will calculate physically realistic caustics for any reflective materials and any refractive materials that have caustics turned on in the material itself.

Note: reflective caustics are always calculated, regardless of the state of the material’s caustics checkbox.



2. Reflective caustics

To render reflective caustics you will need:

  • A highly reflective material (reflective caustics do not require turning on caustics in the material)
    (a typical "metal" setup will work best - diffuse level 0, reflection level 1, Fresnel IOR at 10 or more).

(click to enlarge)

  • A light source (small, bright light will produce sharp, intensive caustics).

  • A surface which will catch the caustics (a ground plane, table top, etc.)

        See: how to set up realistic materials


3. Refractive caustics 

Rendering refractive caustics requires:

  • A refractive material with "Caustics (slow)" option enabled
    (typical glass setup - diffuse level 0, reflection level 1, refraction level 1).

(click to enlarge)

  • The refractive material cannot be using "Thin (no refraction)" option, as refraction is required to render caustics.

  • A light source (small, bright light will produce sharp, intensive caustics).

  • A surface which will catch the caustics (a ground plane, table top, etc.)

See: how to set up realistic materials



CShading_Caustics render element

With the new caustics solver comes a new render element - CShading_Caustics.

This render element allows you to separate the caustics effects from the render to facilitate better control over the effect in post-production.

To enable the CShading_Caustics render element, simply add it to the list of render elements as you would any other render element.

To ensure optimal compositing of the CShading_Caustics render element onto your final render, make sure you enable the “Only in caustics element” checkbox in Render Setup > Performance tab:

Turning on this checkbox will stop caustics from being visible in the final render’s beauty render element. They will, however, be visible in the CShading_Caustics render element and the render time penalty will still apply.

Left: Beauty pass with the caustics rendering disabled, right: the CShading_Caustics render element output of the same render.

The following is the above two images composited by adding the CShading_caustics render element on top of the beauty render element (“screen” in Photoshop):



I can't see caustics!

Make sure that your glass material has the "Caustics (slow)" option enabled under refraction properties and that you are using Corona lights and not standard 3ds max lights or 3ds max photometric lights. 


My caustics are too dark!

The caustics solver calculates physically accurate caustics and so the intensity of the light will directly affect the intensity of the caustics effect.

My caustics are "cut off" in some places, and I can see triangular artifacts!

This can happen under very specific circumstances if the object generating caustics is partly outside of the current camera view. 

See this guide for solutions: [ link ]


My caustics look strange with AI-based denoisers (Intel, Nvidia)

Unfortunately, the AI based denoisers need to be trained to optimally denoise caustics and since the caustics solver in Corona is very new, there has not been enough time to train the denoisers. 

Denoising quality of the AI-based denoisers will improve in the future as we work with both Intel and Nvidia on training their respective AI denoisers.

The Corona high quality denoiser works with caustics perfectly fine. 

See: how to use denoising?


Are there some other tips and tricks on rendering caustics?

  • Do not enable caustics “just for the heck of it”. Rendering with caustics enabled is still slower than rendering without them and unless it’s absolutely necessary, keep caustics to the minimum.

  • Enable dispersion for highly refractive materials to add realism (e.g. diamonds). Beware, this will slow the rendering further, more than just having caustics enabled.

  • Avoid using atmospheric effects like fog with caustics. Even though it is supported, it has not yet been optimized and may cause slowdowns and excessive noise in the current implementation since the old method of calculating in-volume caustics is still being used.




Image rendered at default render settings, with the new caustics solver disabled, for 30 minutes, with the "Caustics (slow)" option disabled for the glass materials, which means that no refractive caustics are visible, and transparent shadows are used instead. This is the compromise between rendering speed and realism. 


Image rendered with the new caustics solver. “Caustics (slow)” option in both reflective and refractive materials has been turned on. Both reflective and refractive caustics are visible and sharp. 30 minutes rendering time.