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 | Output Pixel Size Debug | Charts debug |
---|---|---|
| ||
| ||
|
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 |
---|---|
| |
|
GI Settings Plug-in
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 |
---|---|
| Render means that the container itself and the hierarchy beyond is visible to the real-time renderer. This is for advanced scene design and if not sure, just leave both Render and Global Illumination enabled. |
| 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. |
| Radiosity marks the geometries on the container itself and the hierarchy beyond as immovable and lit by a lightmap. |
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 |
---|---|
| Enables or disables usage of Ambient Occlusion texture. |
| Influences the amount of rays being used during AO. A lower value produces noisier result. |
| 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 |
---|---|---|
| ||
|
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 |
---|---|---|
| indirect | The number of rays to cast for each output pixel during final gather. |
| indirect | The number of samples to cast rays from for each output pixel during final gather. |
| 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 The default value of |
| 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 |
| 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 |
---|---|---|
| ||
|
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 |
---|---|
| Modifies the intensity of the baked ambient occlusion texture. |
| Both values combined set the environment color being passed to the GI backend. |
| Modifies the intensity of the baked direct light texture. |
| Modifies the intensity of the baked indirect light texture. |
Examples
Settings | Screenshot |
---|---|
| |
| |
| |
| |
| |
|
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 |
---|---|
|
|
|
|
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 |