Introduction to Precomputed Realtime GI

Checked with version: 5.5

-

Difficulty: Intermediate

In Unity, there are two distinct techniques available for precomputing global illumination (GI), or bounced lighting. These are Baked GI and Precomputed Realtime GI. This tutorial focuses on Precomputed Realtime GI.

When working with Precomputed Realtime GI, a lighting precompute is the process of calculating the bounce of light around the static geometry within a Scene in the Unity Editor and storing this data for use at run time. This process reduces the number of lighting calculations that must be performed at run time, allowing realtime bounced lighting while maintaining interactive framerates.

When using Baked GI, traditional lightmap textures are generated offline during the precompute process. These textures then exist as assets within the project and cannot be changed at run time. Precomputed Realtime GI does not create lightmap assets in the same way. Instead, lighting data is saved as a Lighting Data Asset which contains the information needed to generate and update a set of low resolution lightmaps interactively, at run time.

Unless our Scene has been properly prepared and optimized, the time it takes to complete these calculations can become excessive. In this tutorial, we will learn how to optimize a Scene for Enlighten (the backend for Unity’s Precomputed Realtime GI and Baked GI solutions) so that lighting precomputes take minutes rather than hours.

Over the course of the document we will cover:

  • How to determine an appropriate lighting resolution for our Scenes.

  • What Charts are and how they affect our precompute times.

  • How to start the precompute process.

  • Using probe lighting to reduce the complexity of our lighting solution.

  • Improving auto-unwrapped UVs generated by Unity’s Precomputed Realtime GI.

  • What Clusters are and how they are used to generate globally illuminated lighting.

  • Using Lightmap Parameters to fine-tune our lighting on a per-object basis.

Once we have learned and applied these techniques, we can leverage the benefits of using Precomputed Realtime GI: fast lighting iteration times, the ability to experiment more rapidly during the lighting process and realtime bounced lighting during gameplay.

Reducing precompute times from hours to minutes

In the Lighting Tutorial Scene used for this tutorial, precomputing the lighting with a default, non-optimized setup took around 7.5 hours on our test machine. For a Scene of this complexity, clearly this is unacceptable.

description

Default Scene: Precompute took 7.5 hours. Optimized Scene: Precompute took 2.25 minutes.

Following around 30 minutes of Scene preparation using the techniques covered in this tutorial, the precompute time was 2.25 minutes for a production-quality result. Considering that we can rapidly iterate on Scene lighting without needing to re-calculate GI and change GI lighting during gameplay, the attractive benefits of this technology are quickly apparent.

Downloading assets for this tutorial

Throughout this tutorial we will be referring to the Lighting Optimisation Tutorial project available from the Unity Asset Store.

In this written tutorial, we will be using the example Scenes contained within the Scenes/Article folder: LightingTutorialOptimal, LightingTutorialNonOptimal and LightingTutorialStart.

  • LightingTutorialOptimal has been set up according to this tutorial and is intended to represent an example of how production-ready lighting results can be achieved with minimal precompute time using Unity’s Precomputed Realtime GI.

  • LightingTutorialNonOptimal reflects a lot of the common problems we see in projects that either don’t finish baking, or take an unacceptably long time. This is a good reference for how Scenes should not be configured.

  • LightingTutorialStart will be the Scene which we are working with throughout this tutorial. As we follow the steps laid out in this tutorial, we will take this Scene to a completed, production-ready result.

Unity For Artists

  1. Lighting Overview
  2. Lights
  3. Materials
  4. The Standard Shader
  5. Textures
  6. Using Skyboxes
  7. A Gentle Introduction to Shaders
  8. Using detail textures for extra realism close-up
  9. Frame Debugger
  1. Introduction to Lighting and Rendering
  2. Choosing a Lighting Technique
  3. The Precompute Process
  4. Choosing a Rendering Path
  5. Choosing a Color Space
  6. High Dynamic Range (HDR)
  7. Reflections
  8. Ambient Lighting
  9. Light Types
  10. Emissive Materials
  11. Light Probes
  1. Introduction to Precomputed Realtime GI
  2. Realtime Resolution
  3. Understanding Charts
  4. Starting the precompute process
  5. Probe lighting
  6. Unwrapping and Chart reduction
  7. Optimizing Unity's auto unwrapping
  8. Understanding Clusters
  9. Fine tuning with Lightmap Parameters
  10. Summary - Precomputed Realtime GI
  1. The Particle System
  2. Adding Lighting To Particles
  3. Adding Movement To Particles With Noise
  4. Fun with Explosions!
  5. Cinematic Explosions - PIT
  1. Intro to Timeline and Cinemachine Tutorial (including Dolly Track)
  2. Intro to Timeline [ by Brackeys ]
  3. Intro to Cinemachine [ by Brackeys ]
  4. Cinemachine Clear Shot Camera Tutorial
  5. Using Timeline: Getting Started
  6. Using Timeline: Understanding Tracks
  7. Using Timeline: Working with Animation Clips
  1. Materials
  2. Emissive Materials
  3. How to remove lighting from Photogrammetry with the De-lighting tool
  1. Introduction to Art & Design Essentials
  2. Uber Standard Shader Real Time Snow Effect
  3. Building Levels With Octave3D
  4. Volumetric Fog with Fog Volume 3
  5. Questions and Answers for Art & Design Essentials
  1. Overview and Goals
  2. Best Practices
  3. Mesh Normal Calculation
  4. DCC Tool Light Import
  5. DCC Tool Camera Import
  6. Importing Visibility Animation
  7. Animation Keyframing Improvements
  8. Stingray PBS Materials
  9. FBX Material Embedding
  10. Questions and Answers