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)
Reflective caustics on a surface (left side, on the concrete wall) and reflective caustics in a volume (right side, in the fog).
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 multi-pass for post-processing, with the possibility to split into diffuse, reflection, refraction, and GI components
-
Caustics work with both the UHD Cache and Path Tracing
- 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 disable for specific lights sources and environment light (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).
-
Caustics inside volumes are still calculated the old way and are not accelerated by the new solver.
- 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.
Setting up Caustics
As mentioned, working with caustics is extremely easy. In the Corona Render Settings under the Performance settings tab, ensure that you have the Fast caustics solver enabled. That's all!
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.
Refractive Caustics
If you are working with transparent materials such as glass or water, you must enable 'Caustic (slow)' in the material's refraction settings.
Please consider that rendering refractive caustics requires:
-
The refractive material cannot be using the "Thin (no refraction)" option, as refraction is required to render caustics.
-
A light source (a small, bright light will produce sharp, intense caustics).
-
A surface that will catch the caustics (a ground plane, table top, etc.).
An example of refractive caustics - light passing through a glass object onto the ground plane.
Reflective Caustics
Reflective caustics are generated for reflective materials automatically, without the need to enable the Caustics (slow) option. The more reflective and less rough a material is, the stronger and sharper caustics it casts.
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:
-
A light source (a small, bright light will produce sharp, intense caustics).
-
A surface which will catch the caustics (a ground plane, table top, etc.)
An example of reflective caustics - a metallic surface reflecting light onto the ground plane.
Caustics Include and Exclude feature
It is also possible to tell the caustics solver what to cast caustics onto. This can be done using the Include/Exclude drop-down menu under the caustics settings. There, you will find 2 options, Apply caustics only on these objects and Don't apply caustics on these objects. In the example below, only the plane to the right should receive caustics.
Examples of using the caustics excludes option:
The default rendering. No excludes used. All glass spheres are casting caustics on all scene objects:
Ground object excluded from receiving caustics - note that the caustics from the bottom-most glass sphere are not visible on the ground any more:
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:
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.
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.
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.
Adding a Caustics Pass
A new caustics pass has been added to Corona's Multi-pass list. This allows you to create a separate render pass just for the caustics. This can be extremely handy if you want to have more control over the strength of the caustics when it comes to compositing. The caustics Multi-pass can also allow you to fine-tune how the caustics will be rendered in your scene with additional options added such as:
Beauty pass: All ''include'' passes displayed in one image:
Include Direct: This contains caustics that are directly visible from the camera:
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:
Include Refracted: Same as Reflected, but the first interaction is refraction:
Include GI: Includes caustics that are not in the above 3 categories (e.g. caustics visible from the camera through diffuse reflection):
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 or an HDRI. Environment caustics are turned on by default and can be controlled by a checkbox in the Performance settings tab of the Render Settings dialog, as shown below:
|
HDRI is used as a scene environment. "Caustics from environment" enabled. |
HDRI is used as a 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 shaders 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 caustic effects by either turning on or off the "Generates caustics" checkbox in the light's properties:
|
Corona Light with the "Generates caustics" option enabled. |
Corona Light with the "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 caustics!
Ensure that your glass material has the "Caustics (slow)" option enabled under refraction properties and that you are using Corona lights instead of standard Cinema 4D lights.
-
I still can't see caustics in my render!
Unless you use the Multi-pass for Caustics, please ensure that "Caustics only in caustics pass" is unchecked.
-
My caustics are too dark!
The caustics solver calculates physically accurate caustics, so the intensity of the light will directly affect the intensity of the caustics effect.
-
My caustics progressively disappear, there are black spots visible on my rendered caustics!
In rare cases, caustics might start disappearing while the rendering progresses, or black spots might start emerging along with your rendered caustics. In cases like these, you can disable the Caustics adaptivity option. Caustics Adaptivity allows for the caustic solver to not calculate very weak caustics in order to save computational resources.
This option should only be disabled if the aforementioned issues are present. To disable it, first enable the Development / Experimental Stuff rollout, and then navigate to Corona's Render Settings > Development / Experimental Stuff > Caustics Solver Settings and uncheck Enable caustics adaptivity.
Note: By default, this option is enabled.
-
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.
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.
-
Corona lights can also be controlled by the click of a switch. If you do not want a certain light to generate caustics, you can uncheck "Generate caustics" in the light's settings.
Examples