refactor(rendering): generalize pipeline stage render graph boundary

This commit is contained in:
2026-04-15 19:31:52 +08:00
parent df8f433fbb
commit 7671663b12
20 changed files with 108 additions and 84 deletions

View File

@@ -181,7 +181,8 @@ bool CameraRenderer::Render(
return false;
}
if (plan.UsesGraphManagedOutputColor(CameraFrameStage::MainScene) &&
(m_pipeline == nullptr || !m_pipeline->SupportsMainSceneRenderGraph())) {
(m_pipeline == nullptr ||
!m_pipeline->SupportsStageRenderGraph(CameraFrameStage::MainScene))) {
Debug::Logger::Get().Error(
Debug::LogCategory::Rendering,
"CameraRenderer::Render failed: graph-managed main scene color requires pipeline main-scene render-graph support");

View File

@@ -48,26 +48,27 @@ bool TryRecordCameraFrameStageStandaloneRenderGraphPass(
return true;
}
bool TryRecordCameraFrameMainSceneGraphPass(
bool TryRecordCameraFramePipelineStageGraphPass(
const CameraFrameStageGraphBuildState& stageState,
const CameraFrameRenderGraphStageContext& context,
bool& handled) {
CameraFrameRenderGraphBuilderContext& builder = context.builder;
if (!SupportsCameraFramePipelineGraphRecording(stageState.stage) ||
builder.executionState.pipeline == nullptr ||
!builder.executionState.pipeline->SupportsMainSceneRenderGraph()) {
!builder.executionState.pipeline->SupportsStageRenderGraph(
stageState.stage)) {
handled = false;
return true;
}
handled = true;
if (!RecordCameraFrameMainSceneGraphPass(
if (!RecordCameraFramePipelineStageGraphPass(
context,
stageState,
*builder.executionState.pipeline)) {
Debug::Logger::Get().Error(
Debug::LogCategory::Rendering,
"CameraRenderer::Render failed: RenderPipeline::RecordMainSceneRenderGraph returned false");
"CameraRenderer::Render failed: RenderPipeline::RecordStageRenderGraph returned false");
return false;
}

View File

@@ -11,7 +11,7 @@ bool TryRecordCameraFrameStageStandaloneRenderGraphPass(
const CameraFrameRenderGraphStageContext& context,
bool& handled);
bool TryRecordCameraFrameMainSceneGraphPass(
bool TryRecordCameraFramePipelineStageGraphPass(
const CameraFrameStageGraphBuildState& stageState,
const CameraFrameRenderGraphStageContext& context,
bool& handled);

View File

@@ -554,22 +554,23 @@ RenderPassContext BuildCameraFrameStageFallbackPassContext(
};
}
RenderPipelineMainSceneRenderGraphContext BuildCameraFrameMainSceneStageRenderGraphContext(
RenderPipelineStageRenderGraphContext BuildCameraFramePipelineStageRenderGraphContext(
const CameraFrameRenderGraphStageContext& context,
const CameraFrameStageGraphBuildState& stageState) {
return BuildRenderPipelineMainSceneRenderGraphContext(
return BuildRenderPipelineStageRenderGraphContext(
BuildCameraFrameStageGraphRecordingContext(
context,
stageState,
context.sceneData));
context.sceneData),
stageState.stage);
}
bool RecordCameraFrameMainSceneGraphPass(
bool RecordCameraFramePipelineStageGraphPass(
const CameraFrameRenderGraphStageContext& context,
const CameraFrameStageGraphBuildState& stageState,
RenderPipelineRenderer& pipeline) {
return pipeline.RecordMainSceneRenderGraph(
BuildCameraFrameMainSceneStageRenderGraphContext(
return pipeline.RecordStageRenderGraph(
BuildCameraFramePipelineStageRenderGraphContext(
context,
stageState));
}

View File

@@ -146,11 +146,11 @@ RenderPassContext BuildCameraFrameStageFallbackPassContext(
const RenderContext& renderContext,
const RenderSceneData& sceneData);
RenderPipelineMainSceneRenderGraphContext BuildCameraFrameMainSceneStageRenderGraphContext(
RenderPipelineStageRenderGraphContext BuildCameraFramePipelineStageRenderGraphContext(
const CameraFrameRenderGraphStageContext& context,
const CameraFrameStageGraphBuildState& stageState);
bool RecordCameraFrameMainSceneGraphPass(
bool RecordCameraFramePipelineStageGraphPass(
const CameraFrameRenderGraphStageContext& context,
const CameraFrameStageGraphBuildState& stageState,
RenderPipelineRenderer& pipeline);

View File

@@ -20,7 +20,7 @@ using CameraFrameStageRecordHandler = bool (*)(
constexpr std::array<CameraFrameStageRecordHandler, 3u> kCameraFrameStageRecordHandlers = {
&TryRecordCameraFrameStageSequence,
&TryRecordCameraFrameStageStandaloneRenderGraphPass,
&TryRecordCameraFrameMainSceneGraphPass
&TryRecordCameraFramePipelineStageGraphPass
};
} // namespace