Wire URP render pass finish callback

This commit is contained in:
2026-04-25 15:57:46 +08:00
parent 5f73b35c0f
commit 6d43fe5a7d
2 changed files with 44 additions and 18 deletions

View File

@@ -12,6 +12,8 @@ namespace XCEngine.Rendering.Universal
new List<ScriptableRenderPass>();
private readonly RendererBlocks m_rendererBlocks =
new RendererBlocks();
private readonly CommandBuffer m_finishCameraStackCommandBuffer =
new CommandBuffer("ScriptableRenderer.FinishCameraStack");
private bool m_isBuildingPassQueue;
private CameraFrameStage m_passQueueStage =
CameraFrameStage.MainScene;
@@ -164,7 +166,14 @@ namespace XCEngine.Rendering.Universal
RenderingData renderingData =
context.renderingData;
BuildPassQueue(renderingData);
return RecordRendererStage(context);
bool recorded =
RecordRendererStage(context);
if (recorded)
{
FinishCameraStackRendering();
}
return recorded;
}
protected internal virtual bool SupportsStageRenderGraph(
@@ -383,6 +392,22 @@ namespace XCEngine.Rendering.Universal
}
}
private void FinishCameraStackRendering()
{
for (int i = 0; i < m_activePassQueue.Count; ++i)
{
ScriptableRenderPass renderPass =
m_activePassQueue[i];
if (renderPass == null)
{
continue;
}
renderPass.OnFinishCameraStackRendering(
m_finishCameraStackCommandBuffer);
}
}
protected virtual void ReleaseRuntimeResources()
{
}