How to render caustics?




Can I render caustics in Corona Renderer?


Yes! Rendering reflective and refractive caustics is perfectly possible, however right now (using Corona Renderer 1.7) it is quite inefficient (slow).




How to render caustics?


1. Reflective caustics

Rendering reflective caustics is straightforward. You will need:

  • A highly reflective 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



2. 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 glass 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


By default, both the reflective and refractive caustics may come out rather dim. To increase their intensity, you can increase the Max Sample Intensity value above the default 20, or set it to 0 to prevent clamping of GI samples and get unbiased rendering.


Note: increasing the MSI value will introduce more noise. Setting it to 0 will usually result in extremely noisy rendering, where some of the bright pixels may never disappear. 




Why is rendering caustics slow?


Currently (version 1.7) there is no dedicated algorithm for rendering caustics in Corona Renderer, so by default it uses path tracing for this. Calculating caustics using this method is very time-consuming, because it is done in a physically-correct way, just like for any other light or GI in the scene. We are planning to implement faster, more efficient way to render caustics in the near future. 


See: Corona Renderer for 3ds Max roadmap




Is there a way to render caustics faster?


Yes, you can use experimental render engines for this, however:

  1. Keep in mind that these engines are really experimental, which means that they probably cannot be used for real production works
  2. Some of the features are then unsupported (e.g. volumetric absorption, invisible light sources)
  3. The overall quality of the rendering may be worse
  4. Artifacts and other unexpected issues may appear

To enable the experimental render engines, you need to enable the development/experimental stuff rollout first, and then select one of the available render engines from the "Render engine" list:


(click to enlarge)


See "examples" section below for example images rendered using various render engines. 




How is glass rendered when the "Caustics (slow)" option is disabled?


If the "Caustics (slow)" option is disabled, all glass materials are casting so called "transparent shadows", which are a compromise between speed and realism. They will render much faster than caustics, but the light will not be focused realistically. 


See "examples" section below for an image rendered with the caustics disabled. 




Troubleshooting


I can't see caustics!

Make sure that your glass material has the "Caustics (slow)" option enabled under refraction properties. 


My caustics are too dark!

Increase MSI value to 100 or more, and check again. You can also set it to 0 to get unbiased rendering, however the image may then become extremely noisy. 


Are there some other tips and tricks on rendering caustics?

Check out our forum. Here are some useful threads:





Examples


(click to enlarge)

Image rendered at default render settings 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. 




Caustics are enabled for the glass materials, and all render settings are at their defaults (MSI is set to 20). Reflective and refractive caustics are present, but they are hardly visible. 




Caustics are enabled for the glass materials, and MSI is set to 0. This results in much sharper, physically-correct caustics, however the image becomes very noisy. 




VCM experimental render engine. The caustics are strong and sharp, but some features of the rendering are missing - light bulb is black, and the juice inside the glass lacks absorption color.




Bidirectional path tracing experimental render engine. Similar to the previous example - the caustics are strong and sharp, but some features of the rendering are missing.




Progressive photon mapping experimental render engine. Similar to the previous example - the caustics are strong and sharp, but some features of the rendering are missing.




Progressive photon mapping experimental render engine (selected from the main "Render engine" list). This engine produces sharp caustics and supports most of the features of the rendering, however the image is much more noisy than in the previous examples.




Caustics enabled. CESSENTIAL_Direct render element showing direct lighting. Caustics are not visible.




Caustics enabled. CESSENTIAL_Inirect render element showing indirect lighting (GI). Caustics are visible, which means that they are a part of GI lighting. It also means that increasing the GI vs. AA value will improve caustics quality per render pass. 




Volumetric caustics rendered with the default render settings by enabling a global volume material.