Align URP pass queue to single camera snapshot
This commit is contained in:
@@ -380,8 +380,7 @@ namespace Gameplay
|
||||
RenderingData renderingData)
|
||||
{
|
||||
if (renderer == null ||
|
||||
renderingData == null ||
|
||||
!renderingData.isShadowCasterStage)
|
||||
renderingData == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -413,8 +412,7 @@ namespace Gameplay
|
||||
for (int i = 0; i < m_passes.Length; ++i)
|
||||
{
|
||||
ScriptableRenderPass renderPass = m_passes[i];
|
||||
if (renderPass == null ||
|
||||
!renderPass.SupportsStage(renderingData.stage))
|
||||
if (renderPass == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -1694,40 +1692,41 @@ namespace Gameplay
|
||||
new FullscreenPass(
|
||||
RenderPassEvent.BeforeRenderingPostProcessing,
|
||||
"ManagedPassQueueSnapshot.PostProcess");
|
||||
private ulong m_enqueuedFramePlanId;
|
||||
private bool m_enqueuedForCurrentFramePlan;
|
||||
private readonly FullscreenPass m_unexpectedDuplicatePass =
|
||||
new FullscreenPass(
|
||||
RenderPassEvent.BeforeRenderingPostProcessing,
|
||||
"ManagedPassQueueSnapshot.UnexpectedDuplicate");
|
||||
private ulong m_addRenderPassesFramePlanId;
|
||||
private int m_addRenderPassesCallCount;
|
||||
|
||||
public override void AddRenderPasses(
|
||||
ScriptableRenderer renderer,
|
||||
RenderingData renderingData)
|
||||
{
|
||||
if (renderer == null ||
|
||||
renderingData == null ||
|
||||
!renderingData.isPostProcessStage)
|
||||
renderingData == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (renderingData.framePlanId == 0UL)
|
||||
if (renderingData.framePlanId != 0UL &&
|
||||
renderingData.framePlanId != m_addRenderPassesFramePlanId)
|
||||
{
|
||||
renderer.EnqueuePass(m_pass);
|
||||
return;
|
||||
}
|
||||
|
||||
if (renderingData.framePlanId != m_enqueuedFramePlanId)
|
||||
{
|
||||
m_enqueuedFramePlanId =
|
||||
m_addRenderPassesFramePlanId =
|
||||
renderingData.framePlanId;
|
||||
m_enqueuedForCurrentFramePlan = false;
|
||||
m_addRenderPassesCallCount = 0;
|
||||
}
|
||||
|
||||
if (m_enqueuedForCurrentFramePlan)
|
||||
if (renderingData.framePlanId != 0UL)
|
||||
{
|
||||
return;
|
||||
m_addRenderPassesCallCount++;
|
||||
if (m_addRenderPassesCallCount > 1)
|
||||
{
|
||||
renderer.EnqueuePass(m_unexpectedDuplicatePass);
|
||||
}
|
||||
}
|
||||
|
||||
renderer.EnqueuePass(m_pass);
|
||||
m_enqueuedForCurrentFramePlan = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user