@@ -270,7 +270,6 @@ public UniversalRenderer(UniversalRendererData data) : base(data)
270
270
#endif
271
271
m_DepthPrepass = new DepthOnlyPass ( RenderPassEvent . BeforeRenderingPrePasses , RenderQueueRange . opaque , data . opaqueLayerMask ) ;
272
272
m_DepthNormalPrepass = new DepthNormalOnlyPass ( RenderPassEvent . BeforeRenderingPrePasses , RenderQueueRange . opaque , data . opaqueLayerMask ) ;
273
- m_MotionVectorPass = new MotionVectorRenderPass ( m_CameraMotionVecMaterial ) ;
274
273
275
274
if ( renderingModeRequested == RenderingMode . Forward || renderingModeRequested == RenderingMode . ForwardPlus )
276
275
{
@@ -312,13 +311,17 @@ public UniversalRenderer(UniversalRendererData data) : base(data)
312
311
m_RenderOpaqueForwardWithRenderingLayersPass = new DrawObjectsWithRenderingLayersPass ( URPProfileId . DrawOpaqueObjects , true , RenderPassEvent . BeforeRenderingOpaques , RenderQueueRange . opaque , data . opaqueLayerMask , m_DefaultStencilState , stencilData . stencilReference ) ;
313
312
314
313
bool copyDepthAfterTransparents = m_CopyDepthMode == CopyDepthMode . AfterTransparents ;
314
+ RenderPassEvent copyDepthEvent = copyDepthAfterTransparents ? RenderPassEvent . AfterRenderingTransparents : RenderPassEvent . AfterRenderingSkybox ;
315
315
316
316
m_CopyDepthPass = new CopyDepthPass (
317
- copyDepthAfterTransparents ? RenderPassEvent . AfterRenderingTransparents : RenderPassEvent . AfterRenderingSkybox ,
317
+ copyDepthEvent ,
318
318
copyDephPS ,
319
319
shouldClear : true ,
320
320
copyResolvedDepth : RenderingUtils . MultisampleDepthResolveSupported ( ) && copyDepthAfterTransparents ) ;
321
321
322
+ // Motion vectors depend on the (copy) depth texture. Depth is reprojected to calculate motion vectors.
323
+ m_MotionVectorPass = new MotionVectorRenderPass ( copyDepthEvent + 1 , m_CameraMotionVecMaterial ) ;
324
+
322
325
m_DrawSkyboxPass = new DrawSkyboxPass ( RenderPassEvent . BeforeRenderingSkybox ) ;
323
326
m_CopyColorPass = new CopyColorPass ( RenderPassEvent . AfterRenderingSkybox , m_SamplingMaterial , m_BlitMaterial ) ;
324
327
#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER
@@ -1700,7 +1703,11 @@ private RenderPassInputSummary GetRenderPassInputs(bool isTemporalAAEnabled, boo
1700
1703
1701
1704
// Motion vectors imply depth
1702
1705
if ( inputSummary . requiresMotionVectors )
1706
+ {
1703
1707
inputSummary . requiresDepthTexture = true ;
1708
+ inputSummary . requiresDepthTextureEarliestEvent = ( RenderPassEvent ) Mathf . Min ( ( int ) m_MotionVectorPass . renderPassEvent , ( int ) inputSummary . requiresDepthTextureEarliestEvent ) ;
1709
+ }
1710
+
1704
1711
1705
1712
return inputSummary ;
1706
1713
}
0 commit comments