diff --git a/com.unity.render-pipelines.universal/CHANGELOG.md b/com.unity.render-pipelines.universal/CHANGELOG.md index d96a46ab5f9..311c8a0841b 100644 --- a/com.unity.render-pipelines.universal/CHANGELOG.md +++ b/com.unity.render-pipelines.universal/CHANGELOG.md @@ -198,6 +198,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed UniversalRenderPipelineAsset now being able to use multiedit - Fixed memory leak with XR combined occlusion meshes. [case 1366173] - Added "Conservative Enclosing Sphere" setting to fix shadow frustum culling issue where shadows are erroneously culled in corners of cascades [case 1153151](https://issuetracker.unity3d.com/issues/lwrp-shadows-are-being-culled-incorrectly-in-the-corner-of-the-camera-viewport-when-the-far-clip-plane-is-small) +- Fixed an issue where screen space shadows has flickering with deferred mode [case 1354681](https://issuetracker.unity3d.com/issues/screen-space-shadows-flicker-in-scene-view-when-using-deferred-rendering) ### Changed - Change Asset/Create/Shader/Universal Render Pipeline/Lit Shader Graph to Asset/Create/Shader Graph/URP/Lit Shader Graph diff --git a/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs b/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs index 8a6768c574d..adfea370f63 100644 --- a/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs +++ b/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs @@ -34,7 +34,7 @@ public override void Create() LoadMaterial(); - m_SSShadowsPass.renderPassEvent = RenderPassEvent.AfterRenderingPrePasses; + m_SSShadowsPass.renderPassEvent = RenderPassEvent.AfterRenderingGbuffer; m_SSShadowsPostPass.renderPassEvent = RenderPassEvent.BeforeRenderingTransparents; } @@ -54,6 +54,12 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD if (shouldEnqueue) { + bool isDeferredRenderingMode = renderer is UniversalRenderer && ((UniversalRenderer)renderer).renderingMode == RenderingMode.Deferred; + + m_SSShadowsPass.renderPassEvent = isDeferredRenderingMode + ? RenderPassEvent.AfterRenderingGbuffer + : RenderPassEvent.AfterRenderingPrePasses; + renderer.EnqueuePass(m_SSShadowsPass); renderer.EnqueuePass(m_SSShadowsPostPass); }