• Stars
    star
    134
  • Rank 269,799 (Top 6 %)
  • Language
    C#
  • License
    MIT License
  • Created over 1 year ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SSR solution for Unity URP

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.

Donation to help me out Click Here

Images enter image description here enter image description here enter image description here Requirements:

  • Unity URP 12 or newer

  • Unity 2021 LTS or newer

!Does not support VR!

Installation 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"

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.
  • Making the hi-z trace more accurate causes triangle like artifacts to appear.
  • Non-power of 2 resolution are the core cause of the artifacts to appear. Current implementation does not handle non-power of 2 resolutions correctly.
  • 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.

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