New GI with primary and secondary bounce plug-ins


Introduction

lightwave2020_icon

The Monte Carlo radiosity engine has been removed in LightWave 2020, and scenes made in previous versions will be adapted on load. The two GI engines are now Brute Force and Irradiance Cache, an interpolated radiosity engine. Brute Force is, as its name suggests, an unbiased radiosity engine, and will have no blotchiness but may have noise if too few rays are used when rendering.

Irradiance Cache relies on caching to create noise-free, blotch-free renders. There are three sorts of cache - a scene cache, a frame cache, and a grid cache - each has their uses, described below.

Primary and Secondary Engines

LightWave now has two radiosity render engines. You can use whichever suits your scenes, but something to bear in mind is that the Secondary engine if used, is the one that will be calculated first. If you are using the Irradiance Cache engine and have no caches baked already, pressing F9 will pre-process a cache at render time. This cache is not permanent, so pressing F9 again will not use the cache from the previous render, and will instead pre-process again.

If you are using both engines, bake the secondary cache first, then primary. The primary cache will sample the scene again. If the rays cast hit a location that was already baked in the secondary cache the primary cache will use that result. If not, new samples will be generated. Once the primary cache is baked to your satisfaction, the secondary cache will no longer be evaluated (and can even be deleted if you are satisfied with your primary cache and need the disk space).

Brute Force settings

LightWave's unbiased Brute Force type is a new implementation based on Monte Carlo but decoupled from the Interpolated version of the engine. Using Brute Force on its own will result in long render times, but there will be no blotchiness, only noise if too few rays are used. There are only a few controls:

  • Intensity - (Default 100 %) You can dial up the radiosity, or reduce it to make its influence on the render more subtle
  • Caustics - (Default Off) Caustics are the flickers of light through a wine glass, or on the side of a swimming pool. They weigh heavily on render time, so only turn them on where necessary for the shot. If you have surfaces with SSS in your scene they will impact caustic rendering time even more

Images courtesy Olivier Michon using PBDSF SSS

Asymmetry 0.5 caustics OFF

Asymmetry 0 caustics OFF

Asymmetry -0.5 caustics OFF

Asymmetry 0.5 caustics ON

Asymmetry 0 caustics ON

Asymmetry -0.5 caustics ON

  • Affected by Volumetrics - (Default Off) Adds volumetrics into the radiosity solution, which can seriously impact render times
  • Rays - (Default 1) Rendering with a single ray will be fast, but it will also be noisy. The more rays you add, the less noisy your renders get, but you'd get rid of the noise faster if you use Secondary GI as well

1 ray BF (Brute Force), 6.5s

2. 100 rays BF, 97s

3. 300 rays BF, 289s

4. 1 ray BF + IC at defaults, 41s

Irradiance Cache Settings

The settings start the same with Intensity, Caustics, Affected by Volumetrics and Rays (though the default for rays is 512), then there's:

  • Interpolation Accuracy - (Default 25 %) The lower the percentage, the smoother (less accurate) the result will be, but the more likely that light will leak. Higher percentages may leak to increased blotchiness necessitating increased samples and slower renders
  • Minimum Pixel Spacing - (Default 2.0) Minimum Pixel Spacing (or MinPS). This figure determines the minimum size, in screen space, of the sample taken for the radiosity. This setting is only available when the Screen Clamping option below is checked
  • Maximum Pixel Spacing - (Default 200.0) Maximum Pixel Spacing (or MaxPS). This figure determines the maximum size, in screen space, of the sample taken for the radiosity. This setting is only available when the Screen Clamping option below is checked
  • Minimum Size - (Default 50 mm). This is the sample size in LightWave world space. This setting is available when the Screen Clamping option below is unchecked. You could be rendering an image of a room at VGA size (640x480), but there will be a sample taken at every 50 mm even if such fine details won't be seen given the limited resolution
  • Distance Tolerance - (Default 50 mm). The first measure to see if another sample is called for is a straight linear distance measurement. Regardless of whether the MaxPS has been exceeded, this measurement determines that a new sample is required
  • Angular Tolerance - (Default 2.0 °). The angular tolerance is based on the normal of the sample. If two samples are taken within this tolerance, one will be rejected
  • Screen Clamping - (Default on) Determines whether screen pixel size determines samples (MinPS and MaxPS), or physical size (Minimum Size)
  • Use Specular - (Default on. Will be ghosted if you don't have Use Cache checked) Determines whether or not to use specular samples in preprocessing for radiosity
  • Use Glossy - (Default on. Will be ghosted if you don't have Use Cache checked) Determines whether or not to use glossy samples in preprocessing for radiosity
  • Use SSS - (Default on. Will be ghosted if you don't have Use Cache checked) Determines whether or not to use SSS samples in preprocessing for radiosity
  • Resolution Multiplier -You can render the radiosity solution for your scene at a higher or lower resolution than the final image. Rendering at a lower resolution will speed up the radiosity portion of the render but will leave contact shadows less defined

Disk Caching

Bake the secondary cache first. Once satisfied that it has baked correctly for your scene, bake a primary cache (presuming you are using Irradiance Cache for both radiosity engines). Once the primary cache has baked, the secondary Irradiance Cache engine will no longer be evaluated.

  • Use Cache - Toggle for the disk cache. If secondary GI is engaged, the secondary cache should be baked before Primary GI cache
  • Cache Type - Two choices:
  • Enable Monitoring - This needs to be checked for monitoring to work at all, and should be checked before you start rendering. Once checked, there are two further options:
    1. Frame - Useful for scenes with animated objects or light sources
    2. Scene - Useful for scenes where there is only camera movement - an architectural
      visualization walkthrough, for instance
  • Cache File - The location on the disk where the cache file will be stored. Cache files are named with a .lwics extension for scene caches, and icfn.lwicf for frame caches where n is the frame number
  • Clear Cache - Destroys the cache file in the location set in the Cache File field
  • Scene Baking Frame Step - What frame interval between caches
  • Bake Grid - A Grid Bake walks a virtual 360 ° camera through the bounding box of your whole scene, taking samples at intervals set in the Grid Spacing field. Note that if you have the main body of your scene concentrated in one area, and some elements stored off to the side, Bake Grid only considers the whole bounding box for the scene and will thus spend time baking empty space
  • Grid Resolution - Size in pixels squared of the cache "images." There's little point baking a cache at a higher resolution than your final render, and you can often get away with baking a cache at a lower resolution though contact shadows might suffer
  • Grid Spacing - The bounding box for your entire scene is split into a grid, in all three dimensions, based on the resolution entered here
  • Bake Frame - Bake a single frame of a scene. Useful if there are troublesome radiosity artifacts without a cache
  • Bake Scene - Bake all the frames for a scene based on the Scene Baking Frame Step above. Normally, if you are baking a grid, the render times for each frame bake should accelerate as samples are added, and fewer and fewer new samples are needed

Cache Baking Considerations

  • If you have both engines engaged, and they are both Irradiance Cache, you should have a cache baked for each. Otherwise, there will be pre-processing when you render with F9 or F10
  • If you are baking a scene with only camera animation, a Cache Type of Scene will suffice; if you have any other animation (of lights or objects) you will want to use a Cache Type of Frame
  • Red dots are new samples taken when baking
  • Baking a scene will generally see baking times fall with each frame

Example

This simple scene is a rough guide to how baking works with this scene

We need the table from page 32 here!!!
1 2 3
4 5 6
7 8 9

Setting up


Global Illumination

Setting up Global Illumination for a scene is often time-consuming, but will pay dividends in overall scene render time

Grid-based Irradiance Cache generation

lightwave2020_icon

Along with camera-based caching there is now the belt-and-braces grid-based cache. The grid-based cache divides your entire scene into blocks and creates a radiosity solution for each block with a 360° camera.

Bake Grid - If you don't know where your camera will be going in your scene yet, or you want a belt and braces approach that ensures that every eventuality will be covered, you can bake a grid cache. The grid cache sets a grid at the spacing set for the bounding box of your whole scene.

The first image shows our test scene with a chair separated from the room we are trying to bake, the second shows the chair in the room. In this simplified diagram, every vertex in the blue bounding box represents where the 360° camera is taking samples (Grid Spacing), at the resolution chosen (Grid Resolution)

The baking process shows this clearly - in the grid bake shown on the left there are large expanses of nothing. Notice also that there are 4,698 locations to bake, adding to the time needed for a render of the cache. In the image on the right, we have returned the chair to within the room we are trying to bake. Already we can see that there are only 132 locations to bake and there will also be very little checkerboard because there are only a few openings (the windows).

When you check this option, two further suboptions become available:

  1. Grid Resolution - By default, this is set to 1024. The resolution of the cache. A cache is not an image, nor a set of images, but the resolution here is similar to the resolution of an image. The higher the resolution the longer each grid will take to bake but the more detail it will contain
  2. Grid Spacing - This is how frequently you will be taking snapshots for this cache, at the resolution specified above