Screen Space Global Illumination
The Screen Space Global Illumination (SSGI) override is a High Definition Render Pipeline (HDRP) feature that uses the depth and color buffer of the screen to calculate diffuse light bounces.
HDRP implements ray-traced global illumination (RTGI) on top of this override. This means that the properties visible in the Inspector change depending on whether you enable ray tracing.
SSGI and RTGI replace all lightmap and Light Probe data. If you enable this override on a Volume that affects the Camera, Light Probes and the ambient probe stop contributing to lighting for GameObjects.
Enabling Screen Space Global Illumination
To use this feature in your Scene, you must first enable it for your project and then enable it for your Cameras. To enable features in your project, you use the HDRP Asset and to enable features for your Cameras, you use Frame Settings. You can enable features either for all Cameras, using the Default Frame Settings, or for specific Cameras, by overriding each Camera's individual Frame Settings.
To enable SSGI:
- Open your HDRP Asset in the Inspector.
- Go to Lighting and enable Screen Space Global Illumination.
- Go to Edit > Project Settings > Graphics > HDRP Global Settings > Frame Settings (Default Values) > Lighting and enable Screen Space Global Illumination.
Using Screen Space Global Illumination
HDRP uses the Volume framework to calculate SSGI, so to enable and modify SSGI properties, you must add a Screen Space Global Illumination override to a Volume in your Scene. To add Screen Space Global Illumination to a Volume:
- In the Scene or Hierarchy view, select a GameObject that contains a Volume component to view it in the Inspector.
- In the Inspector, go to Add Override > Lighting and select Screen Space Global Illumination. HDRP now calculates SSGI for any Camera this Volume affects.
API
To access and control this override at runtime, use the Volume scripting API. Because of how the Volume system works, you edit properties in a different way to standard Unity components. There are also other nuances to be aware of too, such as each property has an overrideState. This indicates to the Volume system whether to use the property value you set, or use the default value stored in the Volume Profile. For information on how to use the API correctly, see Volume scripting API.
Tracing modes
The properties visible in the Inspector change depending on the option you select from the Tracing drop-down:
- To use a screen-space, ray-marched solution, select Ray Marching and see Screen-space for the list of properties.
- To use ray tracing, select Ray Tracing and see Ray-traced for the list of properties.
- To use a combination of ray tracing and ray marching, select Mixed and see Ray-traced for the list of properties. For more information about mixed tracing mode, see mixed tracing
Mixed tracing
This option uses ray marching to intersect on-screen geometry and uses ray tracing to intersect off-screen geometry. This enables HDRP to include on-screen opaque particles, vertex animations, and decals when it processes the effect. This option only works in Performance mode and with Lit Shader Mode setup to Deferred.
In Mixed tracing mode, HDRP processes screen-space ray marching in the GBuffer. This means that it can only use GameObjects rendered using the deferred rendering path. For example, HDRP renders transparent GameObjects in the forward rendering path which means they don't appear in the GBuffer or in effects that use mixed tracing.
In Mixed tracing mode, HDRP still uses ray tracing for any geometry inside the ray tracing acceleration structure, regardless of whether vertex animation or decals modify the geometry's surface. This means if HDRP fails to intersect the on-screen deformed geometry, it intersects the original mesh inside in the ray tracing acceleration structure. This may cause visual discrepancies between what you see and what you expect. For example, the following Scene contains a cliff that uses mesh deformation.
In this Scene, Mixed mode can include reflections for the opaque leaf particles, the white decal, and for GameObjects that aren't visible in the cliff face's original, non-deformed, geometry.
Ray tracing mode doesn't render reflections for the white decal or for the opaque leaf particles. Also, reflection rays intersect with the original, non-deformed, cliff face geometry which means they can not see the rock and bush on the right-hand side. To see the Scene from the perspective of the ray tracing mode, see the following image.
This is the Scene from the perspective of the ray tracing mode. See how the original, non-deformed, cliff face geometry hides the rock and bush that were on the right-hand side of the Scene.
Tracing Modes Limitation
Ray Marching
- Transparent Emissive Material are only taken into account when you set Rendering Pass to Before Refraction.
Ray Tracing
- Transparent Emissive Material aren't taken into account.
- No decals are supported including Emissive Decals.
Mixed Tracing
- The Mixed tracing mode is only useful if you set the Lit shader mode to Deferred and have the same limitation than Ray Tracing mode.
Properties
To edit properties in any Volume component override, enable the checkbox to the left of the property. This also tells HDRP to use the property value you specify for the Volume component rather than the default value. If you disable the checkbox, HDRP ignores the property you set and uses the Volume’s default value for that property instead.
Screen-space
Property | Description | |
---|---|---|
State | When set to Enabled, HDRP processes SSGI for Cameras in the influence of this effect's Volume. | |
Tracing | Specifies the method HDRP uses to calculate global illumination. Depending on the option you select, the properties visible in the Inspector change. For more information on what the options do, see Tracing Modes. The options are: • Ray Marching: Uses a screen-space ray marching solution to calculate global illumination. For the list of properties this option exposes, see Screen Space. • Ray Tracing: Uses ray tracing to calculate global illumination. For information on ray-traced global illumination, see Ray-traced Global Illumination. For the list of properties this option exposes, see Ray-traced. • Mixed: Uses a combination of ray tracing and ray marching to calculate global illumination. For the list of properties this option exposes, see Ray-traced. |
|
Quality | Specifies the overall quality of the effect. The higher the quality, the more resource-intensive the effect is to process. | |
Max Ray Steps | The number of ray steps to use to calculate SSGI. If you set this to a higher value, the quality of the effect improves, however it's more resource intensive to process. | |
Denoise | Enables the spatio-temporal filter that HDRP uses to remove noise from the Ray-Traced global illumination. | |
Half Resolution Denoiser | Enable this feature to evaluate the spatio-temporal filter in half resolution. This decreases the resource intensity of denoising but reduces quality. | |
Denoiser Radius | Set the radius of the spatio-temporal filter. | |
Second Denoiser Pass | Enable this feature to process a second denoiser pass. This helps to remove noise from the effect. | |
Full Resolution | Enable this feature to increase the ray budget to one ray per pixel, per frame. Disable this feature to decrease the ray budget to one ray per four pixels, per frame. | |
Depth Tolerance | Use the slider to control the tolerance when comparing the depth of the GameObjects on screen and the depth buffer. Because the SSR algorithm can not distinguish thin GameObjects from thick ones, this property helps trace rays behind GameObjects. The algorithm applies this property to every GameObject uniformly. | |
Ray Miss | Determines what HDRP does when screen space global illumination (SSGI) ray doesn't find an intersection. Choose from one of the following options: •Reflection probes: HDRP uses reflection probes in your scene to calculate the missing SSGI intersection. •Sky: HDRP uses the sky defined by the current Volume settings to calculate the missing SSGI intersection. •Both : HDRP uses both reflection probes and the sky defined by the current Volume settings to calculate the missing SSGI intersection. •Nothing: HDRP doesn't calculate indirect lighting when SSGI doesn't find an intersection. This property is set to Both by default. |
Ray-traced
Property | Description | |
---|---|---|
Ray Miss | Determines what HDRP does when ray-traced global illumination (RTGI) ray doesn't find an intersection. Choose from one of the following options: •Reflection probes: HDRP uses reflection probes in your scene to calculate the last RTGI bounce. •Sky: HDRP uses the sky defined by the current Volume settings to calculate the last RTGI bounce. •Both : HDRP uses both reflection probes and the sky defined by the current Volume settings to calculate the last RTGI bounce. •Nothing: HDRP doesn't calculate indirect lighting when RTGI doesn't find an intersection. This property is set to Both by default. |
|
Last Bounce | Determines what HDRP does when ray-traced global illumination (RTGI) ray lights the last bounce. Choose from one of the following options: •Reflection probes: HDRP uses reflection probes in your scene to calculate the last RTGI bounce. •Sky: HDRP uses the sky defined by the current Volume settings to calculate the last RTGI bounce. •Both : HDRP uses both reflection probes and the sky defined by the current Volume settings to calculate the last RTGI bounce. •Nothing: HDRP doesn't calculate indirect lighting when it evaluates the last bounce. This property is set to Both by default. |
|
Tracing | Specifies the method HDRP uses to calculate global illumination. Depending on the option you select, the properties visible in the Inspector change. For more information on what the options do, see Tracing Modes. The options are: • Ray Marching: Uses a screen-space ray marching solution to calculate global illumination. For the list of properties this option exposes, see Screen Space. • Ray Tracing: Uses ray tracing to calculate global illumination. For information on ray-traced reflections, see Ray-Traced Global Illumination. For the list of properties this option exposes, see Ray-traced. • Mixed: Uses a combination of ray tracing and ray marching to calculate global illumination. For the list of properties this option exposes, see Ray-traced. |
|
Layer Mask | Defines the layers that HDRP processes this ray-traced effect for. | |
Mode | Defines if HDRP should evaluate the effect in Performance or Quality mode. This property only appears if you select set Supported Ray Tracing Mode in your HDRP Asset to Both. |
|
Quality | Specifies the preset HDRP uses to populate the values of the following nested properties. The options are: • Low: A preset that emphasizes performance over quality. • Medium: A preset that balances performance and quality. • High: A preset that emphasizes quality over performance. • Custom: Allows you to override each property individually. This property only appears if you set Mode to Performance. |
|
Max Ray Length | Controls the maximal length of rays. The higher this value is, the more resource-intensive ray traced global illumination is. | |
Clamp Value | Set a value to control the threshold that HDRP uses to clamp the pre-exposed value. This reduces the range of values and makes the global illumination more stable to denoise, but reduces quality. | |
Full Resolution | Enable this feature to increase the ray budget to one ray per pixel, per frame. Disable this feature to decrease the ray budget to one ray per four pixels, per frame. This property only appears if you set Mode to Performance. |
|
Sample Count | Controls the number of rays per pixel per frame. Increasing this value increases execution time linearly. This property only appears if you set Mode to Quality. |
|
Bounce Count | Controls the number of bounces that global illumination rays can do. Increasing this value increases execution time exponentially. This property only appears if you set Mode to Quality. |
|
Max Mixed Ray Steps | Sets the maximum number of iterations that the algorithm can execute before it stops trying to find an intersection with a Mesh. For example, if you set the number of iterations to 1000 and the algorithm only needs 10 to find an intersection, the algorithm terminates after 10 iterations. If you set this value too low, the algorithm may terminate too early and abruptly stop global illumination. This property only appears if you set Tracing to Mixed. |
|
Denoise | Enable this to enable the spatio-temporal filter that HDRP uses to remove noise from the Ray-Traced global illumination. | |
Half Resolution Denoiser | Enable this feature to evaluate the spatio-temporal filter in half resolution. This decreases the resource intensity of denoising but reduces quality. | |
Denoiser Radius | Set the radius of the spatio-temporal filter. | |
Second Denoiser Pass | Enable this feature to process a second denoiser pass. This helps to remove noise from the effect. |
Screen-space global illumination Limitation
- SSGI is not compatible with Reflection Probes.
- When you set Lit Shader mode to Deferred the Ambient Occlusion from Lit Shader will combine with Screen Space Ambient Occlusion and apply to the indirect lighting result where there is no Emissive contribution. This is similar behavior to rendering with Lit Shader mode set to Forward. If the Material has an emissive contribution then Ambient Occlusion is set to one.