Adding global illumination

The global illumination (GI) is all the lighting that doesn't come directly by the sun or a light. It gives a more realistic aspect to the geometry by simulating indirect lighting. Ambient occlusion (AO) is another method to improve the realism. It darkens the geometry corners and narrow spaces where light should be low.

NDunes allows to compute GI and AO that are totally dynamic and change according to the position of the sun. There are two methods for computing these data: in what we call an external GI cache, or by vertex. The second one is lighter but requires that the geometry has suitable vertices.

There is a unique button to compute these in the geometry toolbar:

Generate geometry GI and AO

The GI and AO properties panel

Before generating GI and AO, some properties need to be set.

The geometry GI and AO panel

The first set of properties shows whether we use the GI/AO cache mode or the vertex GI/AO mode and the associated files locations.

Then we have a checkbox to set dynamic / static sun cache. In case of a static sun cache, a button resets the sun position where it was during the GI computation.

The following properties are several data related to the ground where the geometry is located. they allow to "anchor" the geometry in the landscape by adding ground data in the GI process: Ground color, Ground AO and Ground altitude.

Before generating a GI cache, it is mandatory to compute filtering positions. They are all the positions from which the indirect lighting is computed. The four buttons roles are:

Illumination can be slightly different whereas it is outdoor or indoor. This is why the filtering positions are split into two spaces. This is not mandatory to fill both properties.

Next are several properties ruling the cache calculation:

When compute indoor GI cache, sky light portals can be specified to improve the lighting calculations. Portals are meshes that can be added in the source graph and that will cover all the doors and windows where the sky light may enter the geometry. The name (id) of such meshes can be set in the Skylight portals name property.

In the same way, splitter meshes may be used to separate the indoor from the outdoor when computing GI cache for both spaces. This is the Indoor/Outdoor splitter name property.

The Border shrink property is used when merging indoor and outdoor GI caches. Samples closer to walls and to occluding objects have their size shrinked using this value.

The Cache intensity multiplier allows to boost the indirect lighting intensity.

Your browser does not support the HTML5 canvas tag.

Adding a GI cache to an indoor geometry

Once the GI cache has been computed, the last section of the panel allows to edit individual GI cache samples by picking them in the viewport, changing their color and radius.

An option named GI samples spread can be found in the Settings panel of the current scene. It allows to globally set the radius of the GI cache samples.

Your browser does not support the HTML5 canvas tag.

Reducing the GI sample spread

Vertex GI and AO

The GI cache method can be quite long to compute and can consume a lot of memory. A lighter method can be used where GI and AO are stored in the vertices of the geometry. This require that the meshes are well modeled to handle this.

Your browser does not support the HTML5 canvas tag.

A geometry with vertex GI and AO

Screen Space Ambient Occlusion (SSAO)

In addition to the previous methods, it is possible to enable SSAO in the settings panel (see Miscellaneous settings). It is a quick way to compute ambient occlusion in real time. Combined with a vertex GI color and the automatic sky lighting, as well as the Star GI strength in shadows setting (see Cascaded Shadow Maps settings), it can be used as a fallback method when no cache is computed yet.

A view of the SSAO applied inside a geometry (note that the transparent surfaces have a white AO)