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

@@ -110,7 +110,7 @@ inline RenderGraphRecordingContext BuildRenderGraphRecordingContext(
}
inline RenderGraphRecordingContext BuildRenderGraphRecordingContext(
const RenderPipelineMainSceneRenderGraphContext& context) {
const RenderPipelineStageRenderGraphContext& context) {
return {
context.graphBuilder,
context.passName,
@@ -176,11 +176,13 @@ inline SceneRenderFeaturePassRenderGraphContext BuildSceneRenderFeaturePassRende
};
}
inline RenderPipelineMainSceneRenderGraphContext BuildRenderPipelineMainSceneRenderGraphContext(
const RenderGraphRecordingContext& common) {
inline RenderPipelineStageRenderGraphContext BuildRenderPipelineStageRenderGraphContext(
const RenderGraphRecordingContext& common,
CameraFrameStage stage) {
return {
common.graphBuilder,
common.passName,
stage,
common.renderContext,
common.sceneData,
common.surface,

View File

@@ -61,9 +61,9 @@ public:
bool Initialize(const RenderContext& context) override;
void Shutdown() override;
bool SupportsMainSceneRenderGraph() const override;
bool RecordMainSceneRenderGraph(
const RenderPipelineMainSceneRenderGraphContext& context) override;
bool SupportsStageRenderGraph(CameraFrameStage stage) const override;
bool RecordStageRenderGraph(
const RenderPipelineStageRenderGraphContext& context) override;
bool Render(const FrameExecutionContext& executionContext) override;
bool Render(
const RenderContext& context,

View File

@@ -32,9 +32,9 @@ public:
bool Initialize(const RenderContext& context) override;
void Shutdown() override;
bool SupportsMainSceneRenderGraph() const override;
bool RecordMainSceneRenderGraph(
const RenderPipelineMainSceneRenderGraphContext& context) override;
bool SupportsStageRenderGraph(CameraFrameStage stage) const override;
bool RecordStageRenderGraph(
const RenderPipelineStageRenderGraphContext& context) override;
bool Render(const FrameExecutionContext& executionContext) override;
bool Render(
const RenderContext& context,

View File

@@ -19,9 +19,10 @@ namespace Rendering {
class RenderGraphBuilder;
struct RenderPipelineMainSceneRenderGraphContext {
struct RenderPipelineStageRenderGraphContext {
RenderGraphBuilder& graphBuilder;
Containers::String passName = {};
CameraFrameStage stage = CameraFrameStage::MainScene;
const RenderContext& renderContext;
const RenderSceneData& sceneData;
RenderSurface surfaceTemplate = {};
@@ -41,11 +42,11 @@ public:
virtual bool Initialize(const RenderContext& context) = 0;
virtual void Shutdown() = 0;
virtual bool SupportsMainSceneRenderGraph() const {
virtual bool SupportsStageRenderGraph(CameraFrameStage) const {
return false;
}
virtual bool RecordMainSceneRenderGraph(
const RenderPipelineMainSceneRenderGraphContext&) {
virtual bool RecordStageRenderGraph(
const RenderPipelineStageRenderGraphContext&) {
return false;
}
virtual bool Render(const FrameExecutionContext& executionContext) {

View File

@@ -13,12 +13,12 @@ namespace Rendering {
class SceneRenderFeatureHost;
Containers::String BuildRenderPipelineMainScenePhasePassName(
Containers::String BuildRenderPipelineStagePhasePassName(
const Containers::String& baseName,
ScenePhase scenePhase);
bool RecordRenderPipelineMainSceneFeaturePasses(
const RenderPipelineMainSceneRenderGraphContext& context,
bool RecordRenderPipelineStageFeaturePasses(
const RenderPipelineStageRenderGraphContext& context,
SceneRenderFeatureHost& featureHost,
SceneRenderInjectionPoint injectionPoint,
bool clearAttachments,
@@ -26,8 +26,8 @@ bool RecordRenderPipelineMainSceneFeaturePasses(
SceneRenderFeaturePassEndCallback endPassCallback = {},
bool* recordedAnyPass = nullptr);
bool RecordRenderPipelineMainScenePhasePass(
const RenderPipelineMainSceneRenderGraphContext& context,
bool RecordRenderPipelineStagePhasePass(
const RenderPipelineStageRenderGraphContext& context,
ScenePhase scenePhase,
RenderPassGraphExecutePassCallback executePassCallback,
RenderPassGraphBeginCallback beginPassCallback = {},