Home

Awesome

URP-ScreenSpaceCavity

<img src="/../pics/pics/g-preview.gif" width="100%" height="100%"></img>

How to preview

<b>Tested with</b> Unity version - 2020.3 URP version - 10.7

Configurable parameters

<img src="/../pics/pics/params.jpg" width="100%" height="100%"></img>

Shader setup

Here is an example of parts of the code for the shader to work with Cavity:

#if defined (_SCREEN_SPACE_CAVITY)
  #include "CavityInput.hlsl"
#endif
#pragma multi_compile_fragment _ _SCREEN_SPACE_CAVITY
#pragma multi_compile _ _CAVITY_DEBUG
#if defined (_SCREEN_SPACE_CAVITY)
  if (_CavityEnabled)
  {
    float2 normalizedUV = GetNormalizedScreenSpaceUV(input.positionCS);
    half cavity = SampleCavity(normalizedUV);
    #ifdef _CAVITY_DEBUG
      albedo.rgb = cavity * 2.0;
    #else
      bakedGI *= cavity * 4.0;
      lightColor *= cavity * 4.0;
    #endif
  }
#endif

<b>The main thing is to get the cavity value and use it to apply the color:</b>

#include "CavityInput.hlsl"
float2 normalizedUV = GetNormalizedScreenSpaceUV(input.positionCS);
half cavity = SampleCavity(normalizedUV);
color *= cavity * 4.0;

Attention! A custom shader must have passes for normals and depths.

Notes

Good to everyone!:v: