Global Illumination is a rendering technique that attempts to mimic real-world lighting behavior, taking into account that objects are illuminated by direct light (direct illumination) and receive/reflect/bounce light themselves from their surroundings (indirect illumination).

The Global Illumination solution used in the Viz Engine Render Pipeline is an improved version of the one introduced with Viz Artist 3.9. Major enhancements have been made to increase the realism of the generated output. It relies on precomputed lightmaps to generate indirect lighting. Those lightmaps are updated at runtime when light conditions change.

Important: Global Illumination requires DirectX 9 runtime to be installed. 

Precomputation

This is the most important part for Global Illumination. Without a successful precomputation, no GI is possible. While setting up a scene, it's always good to keep an eye on scene structuring, because it makes life easier when running into problems. The success of a precomputation is influenced by a few settings, which can be controlled either via the scenes Global Illumination Settings panel or the GI Settings plug-in.

Lightmap Pixelsize

The value of Lightmap Pixelsize determines the resolution of precomputed lightmaps. A higher value decreases the resolution and improves performance, but reduces lighting quality. A lower value increases the resolution and improves lighting quality, but reduces performance. Setting the value too low can cause the precompute to fail. The preconfigured value of 50 is a good starting point and indicates that the area of 2x2 pixels of the lightmap are used for a 1m x 1m area of geometry.

Examples

Lightmap
Pixelsize

Output Pixel Size Debug

Charts debug

50

25

10

Probe Volume Resolution

Indirect lighting for dynamic objects is calculated using Spherical Harmonics (SHs). To be able to evaluate the SHs at runtime at any position, a grid of light probes can be defined using the Probe Volume Resolution.

If no dynamic objects are used in the scene, this value can be kept low. Use the Light Probes Debugging option to show the placement and lighting values of the probes at their predefined grid positions.

Examples

Probe Volume Resolution

Screenshot

x = 5
y = 5
z = 5

x = 10
y = 10
z = 10

GI Settings Plug-in

image-20240909-082718.png

One part of the precomputation step generates separate lightmap UVs for each geometry. A precomputed real-time light map has a maximum size of 262,144 pixels (512x512, 1024x256, ...) and corresponds to a so called System. While Viz Engine 3.x only supports a single System per scene, multiple systems can be configured for the Viz Engine Render Pipeline using this plug-in.

If precomputation fails because not all geometries fit into a single lightmap, either the Lightmap Pixelsize can be increased or a new System can be added.

Parameters

Plug-in Parameter

Description

Visibility

Render means that the container itself and the hierarchy beyond is visible to the real-time renderer.
Global Illumination means the container itself and the hierarchy beyond is visible to the Global Illumination system.

This is for advanced scene design and if not sure, just leave both Render and Global Illumination enabled.

System ID

Name of a System. All geometries in with the same System ID are placed into the same lightmap.

The same System ID can be used in multiple instances of the plug-in.

Instance Type

Radiosity marks the geometries on the container itself and the hierarchy beyond as immovable and lit by a lightmap.
Fully Dynamic marks geometries on the container itself and the hierarchy beyond as dynamic, they are not included in the lightmap, can be moved at runtime and are lit by the SH probes.

Tip: There is no absolute rule for how large to make your systems, that is, how much geometry to assign to one system. However, it is recommended that you keep your systems small. The precompute time per system should be less than ten minutes, as a general rule.

Note: The GI Settings plug-in supersedes the automatic mesh classification of Viz Artist 3. Automatic mesh classification is not supported anymore in the Viz Engine Render Pipeline.

Precompute

The Precompute button starts all GI computation steps. The current scene is analyzed and all necessary files are created so the GI backend can do its work. In the Viz Engine Render Pipeline implementation, incremental changes to the scene and incremental computation steps are supported, as long as the scene does not get not closed in between.

Baking

Baking in general defines the process of pre-computing values so that at a later point those values can be re-used to speed up another process. The Viz Engine Render Pipeline allows you to bake out high-resolution lightmaps which can replace lighting calculations during runtime with a single texture lookup. Baking can be mixed seamlessly with real-time lighting and/or real-time radiosity calculations. Baking is useful for scenes with many static lights.

The size of the final textures is set by the Map Size parameter. Increasing the map size increases the quality of the output, but also increased baking time.

Ambient Occlusion

Parameters

Parameter

Description

Bake AO

Enables or disables usage of Ambient Occlusion texture.

Quality

Influences the amount of rays being used during AO. A lower value produces noisier result.

Trace Distance

Sets the distance to search for occluders. This value sets a distance below which a point is considered occluded. You want to tune this parameter based on the size of your scene.

Examples

Settings

Screenshot

AO debug

MapSize = 512
Quality = 6
Trace Distance = 50

MapSize = 1024
Quality = 10
Trace Distance = 50

Baked Lighting

Lightmap baking is automatically enabled and used when you have lights in the scene, which have the Bake setting enabled.

Parameters

Parameter

Lightmap

Description

Final Gather Quality

indirect

The number of rays to cast for each output pixel during final gather.

Final Gather Samples

indirect

The number of samples to cast rays from for each output pixel during final gather.

AA Samples

direct

The number of samples to take per-pixel in order to reduce aliasing. This is the maximum number of times to supersample a lightmap pixel. For preview bakes, a value of 1 is sufficient, but you may notice jagged shadow edges in the output.

The default value of 8 removes the majority of aliasing issues.

Blur Radius

direct

The size of the radius of the post-processing filter in pixels that blurs the direct light baking.

The filter is aware of geometry and visibility between pixels and thus no light leaking occurs. The filter allows otherwise sharp shadows to be smoothed without the need to use area light sources. In general, a value in the range of 2 and up leads to good results.

Area Light Quality

direct

The number of samples to take per-area light in order to capture soft shadowing effects. This is the maximum number of rays to trace to any light with an area. Larger area lights require more rays to produce noise-free output.

The default value works with the majority of scene setups, but you should increase this value if you observe noise.

Examples

Settings

Screenshot

Baked Light debug

MapSize = 512
Final Gather Quality = 8
Final Gather Samples = 4
AA Samples = 2
Blur Radius = 2
Area Light Quality = 16

MapSize = 1024
Final Gather Quality = 512
Final Gather Samples = 16
AA Samples = 8
Blur Radius = 2
Area Light Quality = 64

Bake All

The Bake All button initiates lightmap baking only. If Bake AO is enabled, ambient occlusion gets baked. If lights with Bake flag enabled are found in the scene tree, direct and indirect lightmaps get baked. Bake All only performs steps the GI backend considers necessary (e.g. if Final Gather Quality is changed from one bake to another, only the indirect lightmap is rebaked).

Tip: When setting up a scene with lights, baked lights, baking options, it can happen that baked textures are out-of-date or are incorrectly computed. If this happens, use the Utilities Rebuild Bake Textures feature. This clears all previously baked textures and starts a fresh bake step.

Rendering

When both precomputation and baking achieve the desired result, some parameters can still be tweaked to adjust the composition process of real-time direct lighting, baked lighting and ambient occlusion. In addition, environment color and intensity can be defined to simulate a simple environment light.

Parameters

Setting

Description

Ambient Occlusion Factor

Modifies the intensity of the baked ambient occlusion texture.

Environment Color
Environment Intensity

Both values combined set the environment color being passed to the GI backend.

Baked Light Direct Factor

Modifies the intensity of the baked direct light texture.

Baked Light Indirect Factor

Modifies the intensity of the baked indirect light texture.

Examples

Settings

Screenshot

Ambient Occlusion Factor = 100
Environment Color = Black
Environment Intensity = 100
Baked Light Direct Factor = 100
Baked Light Indirect Factor = 100

Ambient Occlusion Factor = 75
Environment Color = Black
Environment Intensity = 100
Baked Light Direct Factor = 100
Baked Light Indirect Factor = 100

Ambient Occlusion Factor = 75
Environment Color = Blue Tint
Environment Intensity = 100
Baked Light Direct Factor = 100
Baked Light Indirect Factor = 100

Ambient Occlusion Factor = 75
Environment Color = Blue Tint
Environment Intensity = 20
Baked Light Direct Factor = 100
Baked Light Indirect Factor = 100

Ambient Occlusion Factor = 75
Environment Color = Blue Tint
Environment Intensity = 20
Baked Light Direct Factor = 150
Baked Light Indirect Factor = 100

Ambient Occlusion Factor = 75
Environment Color = Blue Tint
Environment Intensity = 20
Baked Light Direct Factor = 150
Baked Light Indirect Factor = 125

Geometry Requirements

Geometries that are considered during GI precomputation need to be properly triangulated, have normals and one UV set.

In contrast to Viz Artist 3, the Viz Engine Render Pipeline does neither require nor support a second UV sets for precomputation.

When a geometry is detected that does not follow the requirements WARNING: Global Illumination FX: Geometry 'containername' not supported is printed to the console.

Material Texture

Both real-time GI and baked lighting require material properties to be able to properly calculate lighting and bounced lighting. Material Texture is introduced in the Viz Engine Render Pipeline, that supports material colors and textures being used. Albedo and Emissive material textures are generated when the real-time GI processing is started or prior to the light baking process.

The material texture is generated with the UVs being generated during precomputation and directly correlates with real-time GI lightmap textures.

Mapping

PBR Material Property

Material Texture

Color Texture
Color Tint

Albedo

Emissive Texture
Emissive Color
Emissive Intensity

Emissive

Information: When changing a material color or texture while authoring, the material texture must be updated manually by clicking the Update Material Texture button.

Tip: When using multiple GI systems, make sure you do not use referenced materials (from Viz Graphic Hub) in more than one system as the lighting might show up incorrect. Please de-reference all used materials

Examples

The scene used for the screenshot does not include any light in the scene, the whole lighting is calculated by the GI using the emissive property of the rectangle on the top of the box and ambient occlusion texture:

Screenshot

Albedo Material Texture

Emissive Material Texture