Skip to content

JoshuaLim007/Unity-ScreenSpaceReflections-URP

Repository files navigation

Unity-ScreenSpaceReflections-URP

SSR solution for Unity URP. Supports Linear Tracing and Hi Z tracing. The package includes SSR render feature and Hierarchical Min-Z Depth Buffer render feature. Created by Joshua Lim

9/10/23 4.2.0 - 4.1.0 changelog

New Features

  • Improved glossy reflections
  • Added downsampling settings for hi-z trace mode

Support this project

Donation link Here

Images

enter image description here enter image description here enter image description here

Installation Instructions:

Instructions:

  1. Copy: "https://github.com/JoshuaLim007/Unity-ScreenSpaceReflections-URP.git"
  2. Go into the package manager in unity
  3. Select "add package from git url"
  4. Paste the link into the text entry
  5. Press "add"

Requirements:

  • Unity URP 12 or newer
  • Unity 2021 LTS or newer

In your URP Asset SSR ScreenShot 1

Tracing Modes

  • Linear Tracing

  • Hi-Z Tracing

enter image description here Hi Z tracing requires "Depth Pyramid" render feature to be added in the pipeline asset. The Depth Pyramid is included in this package.

API:

enter image description here

Changing settings during runtime

void LimSSR.SetSettings(ScreenSpaceReflectionsSettings o)

  • o.StepStrideLength = The length of each ray march stride. Increasing this will reduce image quality but allow for further objects to be visible in the reflections.

  • o.MaxSteps = The number of steps the shader does before ending the ray march. Increasing this will allow further objects to be visible in the reflections but reduce performance.

  • o.Downsample = The number of times the working resolution is downscaled. Increasing this will reduce image quality but increase performance.

  • o.MinSmoothness = The minimum smoothness of a material has to be in order to have reflections.

For the best quality, try to minimize StepStrideLength and maximize MaxSteps

bool LimSSR.Enabled

  • True: Enables effect
  • False: Disables effect

Enables or disables the SSR shader

static RaytraceModes TracingMode

Sets the tracing mode: Linear tracing, or Hi Z tracing

Known Limitations and bugs

  • Wider apart the near and far clip plane, more banding artifact appears.
  • Far reflections are inaccurate and have banding artifact.
  • Transparent objects cannot have reflections.
  • Transparent objects are not correctly reflected onto objects.
  • Downsampling ssr on hi-trace mode causes it to break.
  • Current fix for non-power of 2 resolutions causes warping around edges of objects with a reflection behind it.
  • Hi-z trace cannot have camera facing reflections.
  • No support for VR and Mobile devices

Resources and References

Screen Space Reflection | 3D Game Shaders For Beginners (lettier.github.io)

Screen Space Reflections : Implementation and optimization – Part 1 : Linear Tracing Method – Sugu Lee (wordpress.com)

Screen Space Reflections : Implementation and optimization – Part 2 : HI-Z Tracing Method – Sugu Lee (wordpress.com)

bitsquid: development blog: Notes On Screen Space HIZ Tracing

Screen Space Reflections in Killing Floor 2 (sakibsaikia.github.io)

Hierarchical Depth Buffers - Mike Turitzin