Unity uses middleware called Enlighten for Realtime GI.
Enlighten is deprecated, and will soon be removed. As an alternative lightmapper, use the Progressive GPU Lightmapper (Preview) or Progressive CPU Lightmapper. Unity is developing a new solution for real-time global illumination. For more information, see the Unity blog.
By default, Realtime Lights contribute only direct lighting to a Scene. If you enable Realtime Global Illumination (Realtime GI) in your Scene, Realtime Lights also contribute indirect lighting to a Scene.
Realtime GI is useful for lights that change slowly and have a high visual impact on your Scene, such as the sun moving across the sky, or a slowly pulsating light in a closed corridor. Realtime GI is not intended for Lights that change quickly or for special effects, due to performance cost and latency.
Realtime GI is suitable for games targeting mid-level to high-end PC systems and consoles. Some high-end mobile devices might also be powerful enough to make use of this feature, but you should keep Scenes small and the resolution for real-time lightmaps low to conserve system resources.
To enable Realtime GI in your Scene, open the Lighting window (menu: Window > Rendering > Lighting) and enable Realtime Global Illumination.
To disable the effect of Realtime GI on a specific Light, select the Light GameObject and, in the Light component, set the Indirect Multiplier to 0. This means that the Light doesn’t contribute any indirect light to the Scene.
To disable Realtime GI altogether, open the Lighting window (menu: Window > Rendering > Lighting) and uncheck Realtime Global Illumination.
For detailed step-by-step advice on using Realtime GI, see the Unity tutorial on Precomputed Realtime GI.
In the Unity Editor, Enlighten splits the Scene into small surface patches, and determines the degree to which these patches are visible to each other. At runtime, Enlighten uses this precomputed visibility information to approximate how the Realtime Lights bounce in the Scene, saves the results in a set of lightmaps, and then uses these lightmaps to apply indirect lighting to the Scene.
It is computationally intensive to update the lightmaps, and so the process is split across several frames. In other words, it takes Enlighten a couple of frames to propagate changes to indirect lighting through the Scene.
Note that Light Probes behave differently when you enable Realtime GI.
When you enable Realtime GI in a Scene, Light Probes sample lighting iteratively at runtime. This means that they react to runtime changes in Scene lighting.
When you disable Realtime GI in a Scene, Light Probes only use baked lighting data. This means that they don’t react to runtime changes in Scene lighting.
If the Light also casts shadows, Unity renders both dynamic and static GameObjects in the Scene into the Light’s shadow map. The Material Shaders of both static and dynamic GameObjects then sample this shadow map , and cast real-time shadows on each other. The Shadow Distance (menu: Edit > Project Settings, then select the Quality category, and navigate to the Shadows section) controls the maximum distance at which shadows start to fade out and disappear entirely, which in turn affects performance and image quality.
Note that while Realtime GI also results in soft shadows, unless the Scene is very small, they are typically more coarse-grained than what lightmapping can achieve.
Realtime GI can increase memory requirements, because Enlighten uses an additional set of lightmaps to store real-time indirect bounces.
Realtime GI increases shader calculations, because Enlighten samples the additional set of lightmaps and probes.
If Realtime GI doesn’t respond quickly enough to changes in your Scene lighting, there are several ways to address this problem: