From 0c9a67aaca91f2390ccdf05686fc3267f8f9fc83 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Wed, 15 Apr 2026 07:39:28 +0800 Subject: [PATCH] Rendering: formalize render-pass graph contract --- engine/CMakeLists.txt | 4 ++-- .../XCEngine/Rendering/RenderPassGraphContract.h} | 2 -- .../CameraFrameRenderGraphStageSequenceRecording.cpp | 6 +++--- .../Passes/BuiltinColorScalePostProcessPass.cpp | 4 ++-- .../src/Rendering/Passes/BuiltinDepthStylePassBase.cpp | 5 +++-- engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp | 4 ++-- engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp | 4 ++-- .../Internal/BuiltinForwardMainSceneGraphBuilder.cpp | 4 ++-- ...derPassGraphUtils.cpp => RenderPassGraphContract.cpp} | 4 +--- engine/src/Rendering/SceneRenderFeaturePass.cpp | 4 ++-- tests/Rendering/unit/test_camera_scene_renderer.cpp | 9 ++++----- 11 files changed, 23 insertions(+), 27 deletions(-) rename engine/{src/Rendering/Internal/RenderPassGraphUtils.h => include/XCEngine/Rendering/RenderPassGraphContract.h} (94%) rename engine/src/Rendering/{Internal/RenderPassGraphUtils.cpp => RenderPassGraphContract.cpp} (99%) diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 74bf9cd6..372d7d54 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -513,6 +513,7 @@ add_library(XCEngine STATIC ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Materials/RenderMaterialResolve.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Materials/RenderMaterialStateUtils.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderPass.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderPassGraphContract.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderPipeline.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderPipelineAsset.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderSurface.h @@ -560,8 +561,7 @@ add_library(XCEngine STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Execution/Internal/CameraFrameRenderGraphSurfaceUtils.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Execution/Internal/CameraFrameRenderGraphSurfaceUtils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Caches/DirectionalShadowSurfaceCache.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Internal/RenderPassGraphUtils.h - ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Internal/RenderPassGraphUtils.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/RenderPassGraphContract.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinDepthStylePassBaseResources.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinDepthOnlyPass.cpp diff --git a/engine/src/Rendering/Internal/RenderPassGraphUtils.h b/engine/include/XCEngine/Rendering/RenderPassGraphContract.h similarity index 94% rename from engine/src/Rendering/Internal/RenderPassGraphUtils.h rename to engine/include/XCEngine/Rendering/RenderPassGraphContract.h index d88f563c..040be4bb 100644 --- a/engine/src/Rendering/Internal/RenderPassGraphUtils.h +++ b/engine/include/XCEngine/Rendering/RenderPassGraphContract.h @@ -4,7 +4,6 @@ namespace XCEngine { namespace Rendering { -namespace Internal { struct RenderPassGraphIO { bool readSourceColor = false; @@ -26,6 +25,5 @@ bool RecordRasterRenderPass( const RenderPassRenderGraphContext& context, const RenderPassGraphIO& io); -} // namespace Internal } // namespace Rendering } // namespace XCEngine diff --git a/engine/src/Rendering/Execution/Internal/CameraFrameRenderGraphStageSequenceRecording.cpp b/engine/src/Rendering/Execution/Internal/CameraFrameRenderGraphStageSequenceRecording.cpp index 73332cc1..337c0176 100644 --- a/engine/src/Rendering/Execution/Internal/CameraFrameRenderGraphStageSequenceRecording.cpp +++ b/engine/src/Rendering/Execution/Internal/CameraFrameRenderGraphStageSequenceRecording.cpp @@ -7,7 +7,7 @@ #include "Rendering/Execution/Internal/CameraFrameRenderGraphSurfaceUtils.h" #include "Rendering/Graph/RenderGraph.h" #include -#include "Rendering/Internal/RenderPassGraphUtils.h" +#include namespace XCEngine { namespace Rendering { @@ -48,10 +48,10 @@ std::unique_ptr* ResolveStageSequenceState( bool RecordSequencePass( RenderPass& pass, const RenderPassRenderGraphContext& context, - const Internal::RenderPassGraphIO& io) { + const RenderPassGraphIO& io) { return pass.SupportsRenderGraph() ? pass.RecordRenderGraph(context) - : Internal::RecordRasterRenderPass(pass, context, io); + : RecordRasterRenderPass(pass, context, io); } bool RecordRegularPassSequenceStage( diff --git a/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp b/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp index bfbd81f7..399e50c4 100644 --- a/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp +++ b/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp @@ -2,7 +2,7 @@ #include "Core/Asset/ResourceManager.h" #include "Debug/Logger.h" -#include "Rendering/Internal/RenderPassGraphUtils.h" +#include #include "Rendering/Internal/RenderSurfacePipelineUtils.h" #include "Rendering/Internal/ShaderVariantUtils.h" #include "Rendering/RenderSurface.h" @@ -131,7 +131,7 @@ bool BuiltinColorScalePostProcessPass::SupportsRenderGraph() const { bool BuiltinColorScalePostProcessPass::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, { diff --git a/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp b/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp index a5958852..3f461293 100644 --- a/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp +++ b/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp @@ -1,9 +1,10 @@ #include "Rendering/Passes/BuiltinDepthStylePassBase.h" +#include + #include "RHI/RHICommandList.h" #include "Rendering/Extraction/RenderSceneExtractor.h" #include "Rendering/FrameData/RendererListUtils.h" -#include "Rendering/Internal/RenderPassGraphUtils.h" #include "Rendering/Internal/RenderSurfacePipelineUtils.h" #include "Rendering/RenderSurface.h" #include "Resources/Mesh/Mesh.h" @@ -70,7 +71,7 @@ bool BuiltinDepthStylePassBase::SupportsRenderGraph() const { bool BuiltinDepthStylePassBase::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, { diff --git a/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp b/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp index 1635db8d..2c6c4cf2 100644 --- a/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp +++ b/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp @@ -2,7 +2,7 @@ #include "Core/Asset/ResourceManager.h" #include "Debug/Logger.h" -#include "Rendering/Internal/RenderPassGraphUtils.h" +#include #include "Rendering/Internal/RenderSurfacePipelineUtils.h" #include "Rendering/Internal/ShaderVariantUtils.h" #include "Rendering/RenderSurface.h" @@ -139,7 +139,7 @@ bool BuiltinFinalColorPass::SupportsRenderGraph() const { bool BuiltinFinalColorPass::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, { diff --git a/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp b/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp index 07efba48..6c5da18d 100644 --- a/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp +++ b/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp @@ -2,9 +2,9 @@ #include "Core/Asset/ResourceManager.h" #include "RHI/RHICommandList.h" +#include #include "Rendering/FrameData/RendererListUtils.h" #include "Rendering/Internal/RenderSurfacePipelineUtils.h" -#include "Rendering/Internal/RenderPassGraphUtils.h" #include "Rendering/Extraction/RenderSceneExtractor.h" #include "Rendering/RenderSurface.h" #include "Resources/Mesh/Mesh.h" @@ -64,7 +64,7 @@ bool BuiltinObjectIdPass::SupportsRenderGraph() const { bool BuiltinObjectIdPass::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, { diff --git a/engine/src/Rendering/Pipelines/Internal/BuiltinForwardMainSceneGraphBuilder.cpp b/engine/src/Rendering/Pipelines/Internal/BuiltinForwardMainSceneGraphBuilder.cpp index 7bcac1d0..e0004cd0 100644 --- a/engine/src/Rendering/Pipelines/Internal/BuiltinForwardMainSceneGraphBuilder.cpp +++ b/engine/src/Rendering/Pipelines/Internal/BuiltinForwardMainSceneGraphBuilder.cpp @@ -3,7 +3,7 @@ #include "Debug/Logger.h" #include "Rendering/Graph/RenderGraph.h" #include -#include "Rendering/Internal/RenderPassGraphUtils.h" +#include #include "Rendering/Pipelines/BuiltinForwardPipeline.h" #include "Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.h" #include "Rendering/RenderSurface.h" @@ -189,7 +189,7 @@ bool BuiltinForwardMainSceneGraphBuilder::Record( phaseCommonContext, beginPhasePass, endRecordedPass); - if (!::XCEngine::Rendering::Internal::RecordCallbackRasterRenderPass( + if (!::XCEngine::Rendering::RecordCallbackRasterRenderPass( phaseContext, { false, diff --git a/engine/src/Rendering/Internal/RenderPassGraphUtils.cpp b/engine/src/Rendering/RenderPassGraphContract.cpp similarity index 99% rename from engine/src/Rendering/Internal/RenderPassGraphUtils.cpp rename to engine/src/Rendering/RenderPassGraphContract.cpp index b37e5caa..3b1fa3fe 100644 --- a/engine/src/Rendering/Internal/RenderPassGraphUtils.cpp +++ b/engine/src/Rendering/RenderPassGraphContract.cpp @@ -1,4 +1,4 @@ -#include "Rendering/Internal/RenderPassGraphUtils.h" +#include #include "Rendering/FrameData/RenderSceneData.h" #include "Rendering/Graph/RenderGraph.h" @@ -8,7 +8,6 @@ namespace XCEngine { namespace Rendering { -namespace Internal { namespace { RenderSurface BuildGraphManagedImportedSurface( @@ -332,6 +331,5 @@ bool RecordRasterRenderPass( }); } -} // namespace Internal } // namespace Rendering } // namespace XCEngine diff --git a/engine/src/Rendering/SceneRenderFeaturePass.cpp b/engine/src/Rendering/SceneRenderFeaturePass.cpp index 3078ec3a..00b00b3f 100644 --- a/engine/src/Rendering/SceneRenderFeaturePass.cpp +++ b/engine/src/Rendering/SceneRenderFeaturePass.cpp @@ -1,6 +1,6 @@ #include "Rendering/SceneRenderFeaturePass.h" -#include "Rendering/Internal/RenderPassGraphUtils.h" +#include #include @@ -49,7 +49,7 @@ bool SceneRenderFeaturePass::RecordRenderGraph( context.endPassCallback, context.blackboard }; - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, passContext, { diff --git a/tests/Rendering/unit/test_camera_scene_renderer.cpp b/tests/Rendering/unit/test_camera_scene_renderer.cpp index 2c45be45..d5afdc22 100644 --- a/tests/Rendering/unit/test_camera_scene_renderer.cpp +++ b/tests/Rendering/unit/test_camera_scene_renderer.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -20,8 +21,6 @@ #include #include "Rendering/Execution/Internal/CameraFrameStageSurfaceResolver.h" -#include "Rendering/Internal/RenderPassGraphUtils.h" - #include #include #include @@ -631,7 +630,7 @@ public: bool RecordRenderGraph(const RenderPassRenderGraphContext& context) override { m_state->eventLog.push_back("record:objectId"); - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, { @@ -689,7 +688,7 @@ public: bool RecordRenderGraph(const RenderPassRenderGraphContext& context) override { m_state->eventLog.push_back(std::string("record:") + m_label); - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, { @@ -793,7 +792,7 @@ public: const bool writesColor = context.sourceSurface != nullptr || !context.colorTargets.empty(); - return Internal::RecordRasterRenderPass( + return RecordRasterRenderPass( *this, context, {