Version: 2017.4
Ambient Occlusion
Fog

Screen Space Reflection

The effect descriptions on this page refer to the default effects found within the post-processing stack.

Screen Space Reflection is a technique for reusing screen space data to calculate reflections. It is commonly used to create more subtle reflections such as on wet floor surfaces or in puddles.

Screen Space Reflection is an expensive technique, but when used correctly can give great results. Screen Space Reflection is only available in the deferred rendering path as it relies on the Normals G-Buffer. As it is an expensive effect it is not recommended to be used on mobile.

Scene with Screen Space Reflection
Scene with Screen Space Reflection
Scene without reflections
Scene without reflections
UI for Screen Space Reflection
UI for Screen Space Reflection

Properties

Property: Function:
Blend Type How the reflections are blended into the render.
Reflection Quality The size of the buffer used for resolve. Half resolution SSR is much faster, but less accurate.
Max Distance Maximum reflection distance in world units.
Iteration Count Maximum raytracing length.
Step Size Ray tracing coarse step size. Higher traces farther, lower gives better quality silhouettes.
Width Modifier Typical thickness of columns, walls, furniture, and other objects that reflection rays might pass behind.
Reflection Blur Blurriness of reflections.
Reflect Backfaces Renders the scene by culling all front faces and uses the resulting texture for estimating what the backfaces might look like when a point on the depth map is hit from behind.
Reflection Multiplier Nonphysical multiplier for the SSR reflections. 1.0 is physically based.
Fade Distance How far away from the Max Distance to begin fading SSR.
Fresnel Fade Amplify Fresnel fade out. Increase if floor reflections look good close to the surface and bad farther ‘under’ the floor.
Fresnel Fade Power Higher values correspond to a faster Fresnel fade as the reflection changes from the grazing angle.
(Screen Edge Mask) Intensity Higher values fade out SSR near the edge of the screen so that reflections don’t pop under camera motion.

Optimisation

  • Disable Reflect Backfaces

  • Reduce Reflection Quality

  • Reduce Iteration Count (increase step size to compensate)

  • Use Additive Reflection

Restrictions

  • Unsupported in VR

Details

Screen Space Reflection can be used to obtain more detailed reflections than other methods such as Cubemaps or Reflection Probes. Objects using Cubemaps for reflection are unable to obtain self reflection and Reflection Probe reflections are limited in their accuracy.

Scene using the baked Reflection Probes
Scene using the baked Reflection Probes

In the above image you can see inaccurate reflection in the red-highlighted area. This is due to the translation between the Camera and Reflection Probe. Also notice that as this Reflection Probe is baked it is unable to reflect dynamic object such as the colored spheres.

With realtime Reflection Probes (pictured above) dynamic objects are captured but, like in the example above, the position of the reflection is incorrect. In the red-highlighted area you can see the reflection of the white sphere.

Comparing these to the image at the top of the page (using Screen Space Reflection) we can clearly see the disparity in reflection accuracy, however these methods are much less expensive and should always be used when such accuracy is not necessary.

Screen Space Reflection is calculated by ray-marching from reflection points on the depth map to other surfaces. A reflection vector is calculated for each reflective point in the depth buffer. This vector is marched in steps until an intersection is found with another point on the depth buffer. This second point is then drawn to the original point as a reflection.

Reducing Iteration Count reduces the amount of times the ray is tested against the depth buffer, reducing the cost substantially. However, doing so will shorten the overall depth that is tested resulting in shorter reflections. Increasing the Step Size increases the distance between these tests, regaining the overall depth but reducing precision.

When using the Physically Based Blend Type the BRDF of the reflective material is sampled and used to alter the resulting reflection, this process is expensive but results in more realistic reflections, especially for rougher surfaces.

When using Reflect Backfaces the effect will also raytrace in the opposite direction in attempt to approximate the reflection of the back of an object. This process vastly increases the cost of the effect but can be used to get approximate reflection on reflective objects with other objects in front of them.

Requirements

See the Graphics Hardware Capabilities and Emulation page for further details and a list of compliant hardware.


  • 2017–05–24 Page published

  • New feature in 5.6

Ambient Occlusion
Fog