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)
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 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:
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:
-
A light source (small, bright light will produce sharp, intensive 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.
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.
-
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).
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:
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.
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:
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.
Beauty pass with the caustics rendering disabled |
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 (“add” blending mode in Photoshop):
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:
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 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:
HDRI used as scene environment. "Caustics from environment" enabled. |
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:
Corona Light with "Generates caustics" option enabled. |
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.
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.
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.
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":
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
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.
Light passing through a glass and casting volumetric caustics into cigarette smoke: