How to render caustics with the caustics solver in Corona for 3ds Max?

Old youtube tutorial ( Corona 4 HF1): Getting Started with Caustics in Corona for 3ds Max.


With our caustics solver, absolutely stunning caustics images can be rendered in basically just a few clicks. There is no need to adjust any parameters or "try your luck" with the old experimental engines as done in the past. The caustics solver is easy to work with, supports reflective and refractive caustics, renders fast, and will take your images to the next level of photo-realism. 

 

Caustics solver features

Corona caustics solver supports the following features:

  • Reflective and Refractive caustics (glass, water, highly reflective metals, etc)

  • Caustics inside volumes (light reflecting off a surface and passing through fog, light passing through glass and then through juice, etc)

Corona-caustics-in-volumes-car.jpg

Reflective caustics on a surface (left side, on the concrete wall) and reflective caustics in a volume (right side, in the fog). 

 

underwater-render.jpg

An underwater scene featuring volumetric caustics. 

 

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

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

  • Separate caustics render element for post-processing, with the possibility to split into diffuse, reflection, refraction, and GI components

  • Caustics work in combination with both the UHD Cache and Path Tracing GI solvers

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

  • Two independent multipliers for caustics on surfaces and inside volumes

  • Caustics can be disabled for specific light sources and environment lighting (HDRI or Corona Sky)

  • Objects can be excluded from receiving caustics

 

There are also some limitations:

  • Caustics may render slower/differently when using render regions. The smaller the region the harder it is for the caustics solver to optimally guide photons. 

  • Refractive caustics require having the caustics option enabled in the material. This isn't needed for reflective caustics. 

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

  • The caustics solver uses a Markov Chain Monte Carlo algorithm, which means 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. 

 

How to render caustics?

1. Enabling the caustic solver

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

caustics-solver.png

 

Once the 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.

Note: The Surface multiplier, Caustics in volumes, and Volume multiplier features are available starting from Corona 12 Update 1.

 

2. Reflective caustics

To render reflective caustics you will need:

  • A highly reflective material (reflective caustics do not require turning on any special caustics option in the material). A typical "metal" setup will work best - you can use the "Chrome" preset built into the Corona Physical Material: 

chrome-mtl.png

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

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

reflective-caustics.jpg

An example of reflective caustics - a metallic surface reflecting light onto the ground plane. 

 

3. Refractive caustics 

Rendering refractive caustics requires:

  • A refractive material with "Caustics (slow)" option enabled. You can use the "Glass" Corona Physical Material preset and enable caustics in its settings.

glass-mtl.png
  • The refractive material cannot be using the "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).

refractive-caustics.jpg

An example of refractive caustics - light passing through a glass object onto the ground plane. 

 

Excluding objects from receiving caustics

In some cases, you may want to disable receiving caustics for specific objects in your scene. For example:

  • When rendering jewelry, you may want to see caustics on the ground, but not on other objects.

  • When rendering a pool, you may want to see caustics generated by the water on the bottom of the pool, but not on the walls of nearby buildings.

  • When rendering a bathroom with highly reflective tiles on all walls, generating caustics for the whole interior may be very resource-heavy and may introduce noise. To improve rendering performance, you can exclude most objects from receiving caustics and only keep them where they are really needed (e.g. at the bottom of the bathtub filled with water, or  reflected off a mirror). 

To use this feature, navigate to Render Setup > Performance > Caustics Solver and use the button which says "Objects: 0 objects excluded...". This will open a pop-up list where you can exclude (or include) any scene objects you wish from receiving caustics: 

caustic_solver_exclude.png

 

Examples of using the caustics excludes option:

The default rendering. No excludes used. All glass spheres are casting caustics on all scene objects: 

caustics-full.jpg

 

Ground object excluded from receiving caustics - note that the caustics from the bottom-most glass sphere are not visible on the ground any more:

caustics-groundexcluded.jpg

 

White cube object excluded from receiving caustics - note that the caustics from the glass sphere in the center of the image are not visible on the white cube any more:

caustics-cubeexcluded.jpg

 

In the below example we are rendering a bathtub full of water. There are many reflective materials in the scene, including wall tiles, which results in calculating caustics for almost the whole scene. Additionally, both the refractive and the reflective caustics are visible (at the bottom of the bathtub and on the wall). 

Render time: 5 minutes

Passes: 25

Caustics visible on the wall, on the bottom of the bathtub, some caustics causing fireflies in the shadows in the corner. 

bath-default.jpg

 

To get better rendering performance, get rid of unwanted fireflies, and remove reflective caustics from the wall (if we want to), we can exclude all scene objects from caustics calculations, and only include the bathtub object so that we see refractive caustics generated by the water: 

Render time: 5 minutes

Passes: 27
Caustics are visible in the bathtub only, less fireflies, better overall image quality. 

bath-excludes.jpg

 

Note: some very faint reflective or refractive caustics may still appear even if an object is excluded from receiving caustics. This is because the excludes option disables receiving caustics generated by the fast caustics solver. Corona's default path tracing solver will be still used for simulating lighting in the whole scene anyway. Caustics generated with the default path tracing solver are much weaker, because they are clamped according to the Max Sample Intensity value. 

 

CShading_Caustics render element

With the caustics solver comes a 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:

 

caustic_solver_elements.png

 

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

 

iIvudPiFG5HDDy-6eYnzAJAAALl9G-TQkQ.png
Beauty pass with the caustics rendering disabled
P3aCJjlWhVTJFpdb0pVEMOjz41uIVeuISQ.pngCShading_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 (“add” blending mode in Photoshop):

tM2WVSmyofJwB4RAVVqqg1l3U7HCyTOxRA.png

 

The caustics render element can be also split based on type (direct, reflected, refracted, GI). The resulting elements can be combined to produce the full caustics solution (same as what you normally see in the beauty pass). Caustics can be split into parts and later composed, masked and otherwise adjusted, in 3rd party 2D editors:  

render-elements-ui.png

 

Beauty pass: All ''include'' passes displayed in one image: 

caustics_beauty1.jpg

 

Include Direct: This contains caustics that are directly visible from the camera: 

caustics_direct1.jpg

 

Include Reflected: This includes all caustics that are visible from the camera through a series of specular reflections/refractions, where the first interaction (first bounce after the camera) is reflection: 

caustics_reflected1.jpg

 

Include Refracted: Same as Reflected, but the first interaction is refraction: 

caustics_refracted1.jpg

 

Include GI: Includes caustics that are not in the above 3 categories (e.g. caustics visible from the camera through diffuse reflection): 

caustics_GI1.jpg

 

 

Environment caustics and per-light control 

Environment caustics

The caustics solver can also generate caustics cast by your scene environment, be it a Corona Sky map or an HDRI. Environment caustics are turned on by default and can be controlled by a checkbox in the Performance tab of the Render Setup dialog as shown below:

caustic_solver_enviroment.png

 

caustics-from-enviro-on.jpg

HDRI used as scene environment. "Caustics from environment" enabled.

caustics-from-enviro-off.jpg

HDRI used as scene environment. "Caustics from environment" disabled.

 

If the "Caustics from environment" checkbox is cleared, caustics will only be calculated from the scene lights and any environment maps will be ignored.

 

This is useful if your HDRI has a strong light source that you do not want to affect the caustics in the scene (for example, you are using a Corona Sun for the main light in the scene).

 

It is also recommended to disable caustics generated by the environment if you are matching a Corona Sun to a sun on the HDRI image as otherwise, caustics will be calculated for both the HDRI image's sun and the Corona Sun which can lead to incorrect results and longer rendering times as well as possibly overly blur the caustics effect.

 

 

Per-light control of caustics

You can define which lights do and which do not produce caustics effects by either turning on or off the "Generates caustics" checkbox in the light's properties:

eIskiN-ZdR3JT_cvMig8VNfLbwH1InOQEw.png

 

corona-light-generate-caustics-on.jpg

Corona Light with "Generates caustics" option enabled.

corona-light-generate-caustics-off.jpg

Corona Light with "Generates caustics" option disabled.

Note: all lights have the "Generate caustics" option enabled by default.

 

Disabling caustics in individual lights is useful in cases where you want to have a large-scale caustics effect, for example from a sun hitting a pool, but don't want to have a longer render time associated with calculating caustics from interior or exterior lighting. 

 

 

Troubleshooting

I can't see my caustics!

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

glass-mtl.png 

 

My caustics are too dark!

By default, the caustics solver calculates physically accurate caustics and so the intensity of the light will directly affect the intensity of the caustics effect. To boost caustics brightness you can use the surface and volume multipliers in Render Setup > Performance

caustics-multipliers.png

 

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: Caustics appear cut off / with artifacts!

 

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

Unfortunately, the AI based denoisers need to be trained to optimally denoise caustics. 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?

 

My caustics progressively disappear, there are black spots visible in my caustics!

In rare cases, caustics may start disappearing while the rendering progresses, or black spots might start emerging in your image. In cases like these, you will need to disable the Caustics Adaptivity option. Normally the Caustics Adaptivity option allows for the caustic solver to not calculate very weak caustics in order to save computational resources, but in some cases this causes visible issues. 

This option should only be disabled if the aforementioned issues are present. To disable it, first enable Devel/debug mode in Corona System settings in System Tab of 3ds max Render Setup. Then navigate to Performance > Caustics solver settings and uncheck "Enable caustics adaptivity"

W6dWmIb9AOeDiVMOuoZ9kmulgaPziokatg.png

Note: this option is enabled by default.

 

 

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.

 

Examples

Image rendered at default render settings, with the 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: 

hEcOgrikTy7vl-Sx5n-F88WIau2m_GjL6g.png

 

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

dXrryAywdezc3WE57atNLK570XFrQ7b6eQ.jpeg

 

Light passing through a glass and casting volumetric caustics into cigarette smoke: 

cigarette2.jpg

Was this article helpful?
2 out of 2 found this helpful