Light caching (sometimes also called light mapping) is a technique for approximating the global illumination in a scene. This method was developed originally by Chaos Group specifically for the VRAYforC4D renderer. It is very similar to Photon mapping, but without many of its limitations.

The light cache is built by tracing many many eye paths from the camera. Each of the bounces in the path stores the illumination from the rest of the path into a 3d structure, very similar to the Photon map. On the other hand, in a sense, it is the exact opposite of the Photon map, which traces paths from the lights, and stores the accumulated energy from the beginning of the path into the Photon map.

Although very simple, the light-caching approach has many advantages over the Photon map:

  • It is easier to set up. We only have the camera to trace rays from, as opposed to the Photon map, which must process each light in the scene and usually requires separate setup for each light.
  • The light-caching approach works efficiently with any lights – including skylight, self-illuminated objects, non-physical lights, photometric lights etc. In contrast, the Photon map is limited in the lighting effects it can reproduce – for example, thePhoton map cannot reproduce the illumination from skylight or from standard omni lights without inverse-square falloff.
  • The light cache produces correct results in corners and around small objects. The Photon map, on the other hand, relies on tricky density estimation schemes, which often produce wrong results in these cases, either darkening or brightening those areas.
  • In many cases the light cache can be visualized directly for very fast and smooth previews of the lighting in the scene.
  • Even with these advantages, light caching is similar in speed to the Photon map and can produce approximations to the global lighting in a scene very quickly. In addition, the light cache can be used successfully for adding GI effects to animations.

Of course, the light cache has some limitations:

  • Like the Irradiance map, it is view-dependent and is generated for a particular position of the camera.
  • Like the Photon map, the light cache is not adaptive. The illumination is computed at a fixed resolution, which is determined by the user.

Calculation parameters

These parameters affect the calculation phase of the light cache; they do not affect the final rendering.

Override LC Subdivision – this option, allow override Subdivision passes number with auto passes number depended from Sample ratio and image resolution.

Sample ratio – this setting defines number of subdivs depends to the final image size resolution. Lowering the ratio reduces time but also lowers light cache quality.

Subdivision – this determines how many paths are traced from the camera. The actual number of paths is the square of the subdivs (the default 1000 subdivs mean that 1 000 000 paths will be traced from the camera).

Sample size – this determines the spacing of the samples in the light cache. Smaller numbers mean that the samples will be closer to each other, the light cache will preserve sharp details in lighting, but it will be more noisy and will take more memory. Larger numbers will smooth out the light cache but will loose detail. This value can be either in world units or relative to the image size, depending on light cache Scale mode.

Use Camera Path – when this option is on, VRAYforC4D will calculate the light cache samples for the entire camera path, instead of just the current view, in the same way as this is done for the Fly-through mode. This is useful when rendering animations with moving objects where the camera also moves and the light cache needs to be in Single frame mode. In this case, setting the Use camera path option on will help to reduce any flickering, as the GI sample positions on static geometry will not change.

Mode – determines the rendering mode of the light cache:

  • Single frame – this will compute a new light cache for each frame of an animation.
  • Fly-through – this will compute a light cache for an entire fly-through animation, assuming that the camera position/orientation is the only thing that changes. The movement of the camera in the active time segment only is taken in consideration. Note that it may be better to use World Scale for fly-through animations. The light cache is computed only at the first rendered frame and is reused without changes for subsequent frames.
  • From file – in this mode the light cache is loaded from a file. The light cache file does not include the prefiltering of the light cache; prefiltering is performed after the light cache is loaded, so that you can adjust it without the need to recompute the light cache. Load file – specifies the file name to load the light cache from, when the Mode is set to From file.
  • Path tracing – in this mode, the light cache algorithm is used to sample the final image progressively.

Reconstruction parameters

Enable LC retrace – Retrace threshold – when enabled, this option improves the precision of the global illumination in cases where the light cache will produce too large an error. This is especially obvious with the Use light cache for glossy rays option, or near corners where light leaks might be possible because of the light cache interpolation. For glossy reflections and refractions, VRAYforC4D dynamically decides whether to use the light cache or not based on the surface glossiness and the distance from it so that the errors due to the light cache are minimized. Note that this options may increase the render time.

Retrace threshold – this parameter dynamically decides whether to use the light cache or not.

On render end

This group of controls determine what happens with the light cache after rendering is complete.

Auto save – when on, the light cache will be automatically written to the specified file. Note that the light cache will be written as soon as it is calculated, rather than at the actual end of the rendering.

Auto save file – when on, after the rendeing is complete, the light cache Mode will be automatically set to From file and the name of the auto-saved light cache file will be copied to the File parameter.

 Do not set the Adaptive amount in the DMC sampler rollup to 0.0 when using the light cache, as this will cause excessive render times.

Do not apply perfectly white or very close to white materials to a majority of the objects in the scene, as this will cause excessive render times. This is because the amount of reflected light in the scene will decrease very gradually and the light cachewill have to trace longer paths. Also avoid materials that have one of their RGB components set to maximum (255) or above.

If you want to use the light cache for animation, you should choose a large enough value for the Filter size in order to remove the flickering in the GI.

There is no difference between light caches computed for primary bounces (direct visualization) and for secondary bounces. You can safely use light caches computed in one of these modes for the other.

Similar to the Photon map, you can get “light leaks” with the light cache around very thin surfaces with substantially different illumination on both sides. Sometimes it may be possible to reduce this effect by decreasing the Sample size and/or the filtering.

Example 1: The Subdivs parameter


The Subdivs parameter controls the number
of rays that are shot into the scene, and the “noise” quality of the light
cache samples.

Here is a scene rendered with different settings for the
Subdivs parameter, all other settings are the
same.

  • As we add more samples, the noise is reduced, but the render times
    increase. When the Subdivs parameter is increased twice, the light cache
    takes approximately 4 times as long to calculate.
Subdivs = 500
Subdivs =
1000
Subdivs =
2000

Example 2: The Sample size parameter


The Sample size parameter controls the
size of the individual light cache samples. Smaller values produce a more
detailed lighting solution, but are noisier and take more RAM. Larger values
produce less detail, but take less RAM and may be faster to calculate.

Here is a scene rendered with different values for the
Sample size parameter. All other values are
the same.

  • Note the light leak from the wall on the right in the last image – this
    is because samples from the other side of the wall are quite large (because
    of the Screen Scale)
    and end up being used on the side facing the camera (compare this with the
    World Scale in
    Example 3).
  • Note the difference in the noise level between the samples.
Sample size =
0.01
Sample size =
0.02
Sample size =
0.04

Example 3: The Scale parameter


The Scale parameter determines whether the Sample
size
and Filter size parameters are in
screen space, or world space.

In the table below, the Screen scale was used,
and the scene was rendered with different image and world sizes. The
Sample size was constant for all images – the
default 0.02.

  • As you can see, we always get the same number of light cache samples for
    all cases, regardless of resolution or scene size – in fact, when scaled to
    the same size, the images look identical. This is why the
    Screen Scale is
    applicable to the large variety of scenes.
Scene scaled down to 50%
Normal scene
Scene scaled up to 200%
Resolution 250×300
Resolution 500×600
Resolution 1000×1200

In the table below, the World
Scale mode was used. Again, the scene is
rendered at three different resolutions and scales, but with the same light
cache parameters. The sample size was set to be 1/5th of the sphere radius
in the scene at normal scale.

  • You can notice that the number of samples again does not depend on the
    image resolution, but it does depend on the scene size.
  • Also notice how the samples near the camera appear larger because of the
    perspective – in difference from the Screen
    Scale mode which compensates for this effect
    and tries to make the samples with more or less equal size on the image.
  • Another thing to note is that we don’t get light leaks (compare with
    Example 2), even when the samples are relatively large –
    this is because the World
    Scale
    forces a uniform sample size on both sides of the right wall.
Scene scaled down to 50%
Normal scene
Scene scaled up to 200%
Resolution 250×300
Resolution 500×600
Resolution 1000×1200