This page provides information on the Caustics rollout.
Overview
V-Ray supports the rendering of caustics effects by using one of the following techniques: photon mapping or progressive.
The new Progressive caustics solver uses advanced sampling techniques, and is able to trace as many photons as required without suffering the memory constraints of traditional Photon Mapping techniques.
It is loosely based on two papers: one on Progressive Photon Mapping from Knaus and Zwicker, and another on Metropolis-guided caustics tracing from Šik and Krivánek.
The other method, Photon Mapping, is a two-pass technique.
The first pass consists of shooting light particles (photons) from the light sources in the scene, tracing them as they bounce around the scene, and recording the places where the photons hit the object surfaces.
The second pass is the final rendering, which is when the caustics are calculated by using density estimation techniques on the photon hits stored during the first pass.
UI Path: ||Render Setup window|| > GI tab > Caustics rollout (Renderer set to V-Ray)
Basic Parameters
The following parameters are visible from the Caustics rollout when set to the Basic Render UI Mode.
Caustics – Turns rendering of caustics on and off.
Calculation method – Specifies whether caustics should be calculated using a traditional Photon map or the new Progressive1 algorithm.
Progressive
The Progressive method doesn't need most of the controls used for traditional Photon Mapping, so the controls are grayed out. Only the Search Dist control in the render settings and the Multiplier V-Ray property in lights, and in the advanced mode of the caustics panel, have an effect on the result.
Search dist – Specifies the initial photon lookup radius in pixels.
Tips when working with progressive caustics:
Required:
- Affect Shadows should be off in refractive materials if they are to generate caustics.
- The Affect Channels option should be set to Affect all Channels in refractive materials to ensure the Caustics render element contains also the ones fallen behind refraction.
Not doing so leaves photons fallen behind refractive surfaces inside the Refraction RE, but not inside the Caustics one. - If present, the VRaySun's photon emit radius should be set to a value large enough to encompass the relevant parts in the scene.
Optional:
- It is strongly recommended to set time limit when rendering with Progressive Caustics, rather than relying on Noise Threshold value only.
- Lower the Min. Shading Rate.
Photons are cast for each camera ray, not for the secondary ones. The more camera rays are cast, the more photon passes are achieved.
A value of 3 is fine if rendering with the rest of the scene, but a value of 1 could be used if rendering specific caustic passes (for example, a caustics pass scene prepared with the purpose of maximizing caustics' calculation speeds).
- Set a higher min AA subdivs value.
A higher min AA subdivs value (16, 24, even higher.) means there will be a longer phase of fixed sampling with no adaptation to the photon casting, so the screen coverage of samples will remain more consistent, allowing for quicker filling of, for example, big flat areas or long thin lines.
The later phase of rendering, with adaptation, will then just bring noise down to ensure Noise Threshold is respected.
Managing Expectations:
- The progressive caustic solver is fire and forget.
This means that it can be turned on in any scene, and expected to trace photons on any specular or refractive surface.
It doesn't, however, mean that doing so will result in an image converged to perfection within a short time.
The approach, novel as it is, is still photon-map based, and judgement should be used to ensure quick, noise and frustration-free results.
- It renders with the beauty.
The solver does indeed render happily alongside a beauty pass, storing caustics in the appropriate Render Element (see requirements tips above!), but that may not be the best solution as far as performance is concerned.
It's suggested to consider preparing a dedicated caustic rendering pass if the photon tracing is particularly extensive, and/or if sequences are to be rendered.
That way, it will be possible to optimize the caustics calculation separately from the requirements of the beauty pass.
Example: The Search Distance Parameter
For this example, the Light Caustics Multiplier is 80 (V-Ray Light Properties > Caustics Multiplier) and the rest of the parameters are at their default values. The light used in the scene is VRaySun. The Caustics method is set to Progressive. The Caustics Multiplier (Render Setup > GI tab > Caustics rollout) is set to 15.
Advanced Parameters
The following parameters are added to the list of visible settings available from the Caustics rollout when set to the Advanced Render UI Mode.
Progressive Mode
Multiplier – This multiplier controls the strength of the caustics. It is global and applies to all light sources that generate caustics. Should a different multipliers for each light source be needed, the V-Ray properties of each light should be edited. Note: this multiplier is cumulative with the multipliers in the local light settings.
It should also be noted that changing multipliers, while useful for artistic purposes, will result in physically-inaccurate scenes.
Progressive Caustics Advantages
they require nearly no setup;
- each cast photon is more useful than those in traditional Photon Mapping;
- the number of photons castable is only limited by time, not memory;
- they can resolve tiny caustic details, compared to the scene size;
- they can resolve caustic details also when a camera is very zoomed in on them;
- statistics about the photon tracing can be found in the VFB2 stats panel;
Progressive Caustics Limitations
- they require the progressive image sampler;
- the image sampler often requires Min. subdivs values much higher than 1;
- it's non-deterministic, meaning that there could be somewhat unpredictable render times, and also tiny differences in the visual results when rendering the same frame twice;
- currently doesn't work with distributed rendering;
- currently not supported by the GPU engine;
- Depending on the scene, the performance might not scale linearly with the number of threads/cores, resulting in inefficient CPU utilization.