Tighten URP pass queue snapshot ownership

This commit is contained in:
2026-04-27 15:21:57 +08:00
parent c0b829cd6a
commit 66d968c3ce
22 changed files with 849 additions and 51 deletions

View File

@@ -1687,6 +1687,69 @@ namespace Gameplay
}
}
internal sealed class ManagedPassQueueSnapshotProbeFeature
: ScriptableRendererFeature
{
private readonly FullscreenPass m_pass =
new FullscreenPass(
RenderPassEvent.BeforeRenderingPostProcessing,
"ManagedPassQueueSnapshot.PostProcess");
private ulong m_enqueuedFramePlanId;
private bool m_enqueuedForCurrentFramePlan;
public override void AddRenderPasses(
ScriptableRenderer renderer,
RenderingData renderingData)
{
if (renderer == null ||
renderingData == null ||
!renderingData.isPostProcessStage)
{
return;
}
if (renderingData.framePlanId == 0UL)
{
renderer.EnqueuePass(m_pass);
return;
}
if (renderingData.framePlanId != m_enqueuedFramePlanId)
{
m_enqueuedFramePlanId =
renderingData.framePlanId;
m_enqueuedForCurrentFramePlan = false;
}
if (m_enqueuedForCurrentFramePlan)
{
return;
}
renderer.EnqueuePass(m_pass);
m_enqueuedForCurrentFramePlan = true;
}
}
internal sealed class ManagedPassQueueSnapshotProbeRendererData
: ProbeRendererData
{
public ManagedPassQueueSnapshotProbeRendererData()
: base(false)
{
rendererFeatures =
ProbeScriptableObjectFactory
.CreateRendererFeatureList(
ProbeScriptableObjectFactory
.Create<ManagedPassQueueSnapshotProbeFeature>());
}
protected override ScriptableRenderer CreateProbeRenderer()
{
return new ProbeSceneRenderer();
}
}
internal sealed class ManagedRenderContextCameraDataProbeRendererData
: ProbeRendererData
{
@@ -2287,6 +2350,19 @@ namespace Gameplay
}
}
public sealed class ManagedPassQueueSnapshotProbeAsset
: UniversalRenderPipelineAsset
{
public ManagedPassQueueSnapshotProbeAsset()
{
rendererDataList =
ProbeScriptableObjectFactory
.CreateRendererDataList(
ProbeScriptableObjectFactory
.Create<ManagedPassQueueSnapshotProbeRendererData>());
}
}
public sealed class ManagedInvalidFullscreenStagePlanningProbeAsset
: UniversalRenderPipelineAsset
{