diff --git a/engine/include/XCEngine/Rendering/RenderPassGraphContract.h b/engine/include/XCEngine/Rendering/RenderPassGraphContract.h index 040be4bb..d85a7d50 100644 --- a/engine/include/XCEngine/Rendering/RenderPassGraphContract.h +++ b/engine/include/XCEngine/Rendering/RenderPassGraphContract.h @@ -11,6 +11,22 @@ struct RenderPassGraphIO { bool writeDepth = false; }; +inline RenderPassGraphIO BuildSourceColorFullscreenRasterPassGraphIO() { + return { + true, + true, + false + }; +} + +inline RenderPassGraphIO BuildColorDepthRasterPassGraphIO() { + return { + false, + true, + true + }; +} + using RenderPassGraphExecutePassCallback = std::function; @@ -25,5 +41,23 @@ bool RecordRasterRenderPass( const RenderPassRenderGraphContext& context, const RenderPassGraphIO& io); +inline bool RecordSourceColorFullscreenRasterPass( + RenderPass& pass, + const RenderPassRenderGraphContext& context) { + return RecordRasterRenderPass( + pass, + context, + BuildSourceColorFullscreenRasterPassGraphIO()); +} + +inline bool RecordColorDepthRasterPass( + RenderPass& pass, + const RenderPassRenderGraphContext& context) { + return RecordRasterRenderPass( + pass, + context, + BuildColorDepthRasterPassGraphIO()); +} + } // namespace Rendering } // namespace XCEngine diff --git a/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp b/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp index 399e50c4..c99eba23 100644 --- a/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp +++ b/engine/src/Rendering/Passes/BuiltinColorScalePostProcessPass.cpp @@ -131,14 +131,9 @@ bool BuiltinColorScalePostProcessPass::SupportsRenderGraph() const { bool BuiltinColorScalePostProcessPass::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return RecordRasterRenderPass( + return RecordSourceColorFullscreenRasterPass( *this, - context, - { - true, - true, - false - }); + context); } bool BuiltinColorScalePostProcessPass::Execute(const RenderPassContext& context) { diff --git a/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp b/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp index 3f461293..020f5d05 100644 --- a/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp +++ b/engine/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp @@ -71,14 +71,9 @@ bool BuiltinDepthStylePassBase::SupportsRenderGraph() const { bool BuiltinDepthStylePassBase::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return RecordRasterRenderPass( + return RecordColorDepthRasterPass( *this, - context, - { - false, - true, - true - }); + context); } bool BuiltinDepthStylePassBase::Execute(const RenderPassContext& context) { diff --git a/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp b/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp index 2c6c4cf2..10c5fdce 100644 --- a/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp +++ b/engine/src/Rendering/Passes/BuiltinFinalColorPass.cpp @@ -139,14 +139,9 @@ bool BuiltinFinalColorPass::SupportsRenderGraph() const { bool BuiltinFinalColorPass::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return RecordRasterRenderPass( + return RecordSourceColorFullscreenRasterPass( *this, - context, - { - true, - true, - false - }); + context); } bool BuiltinFinalColorPass::Execute(const RenderPassContext& context) { diff --git a/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp b/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp index 6c5da18d..53411b04 100644 --- a/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp +++ b/engine/src/Rendering/Passes/BuiltinObjectIdPass.cpp @@ -64,14 +64,9 @@ bool BuiltinObjectIdPass::SupportsRenderGraph() const { bool BuiltinObjectIdPass::RecordRenderGraph( const RenderPassRenderGraphContext& context) { - return RecordRasterRenderPass( + return RecordColorDepthRasterPass( *this, - context, - { - false, - true, - true - }); + context); } bool BuiltinObjectIdPass::Execute(const RenderPassContext& context) { diff --git a/tests/Rendering/unit/test_camera_scene_renderer.cpp b/tests/Rendering/unit/test_camera_scene_renderer.cpp index 7a1e2713..e9eb1b1e 100644 --- a/tests/Rendering/unit/test_camera_scene_renderer.cpp +++ b/tests/Rendering/unit/test_camera_scene_renderer.cpp @@ -630,14 +630,9 @@ public: bool RecordRenderGraph(const RenderPassRenderGraphContext& context) override { m_state->eventLog.push_back("record:objectId"); - return RecordRasterRenderPass( + return RecordColorDepthRasterPass( *this, - context, - { - false, - true, - true - }); + context); } bool Execute(const RenderPassContext& context) override { @@ -688,14 +683,9 @@ public: bool RecordRenderGraph(const RenderPassRenderGraphContext& context) override { m_state->eventLog.push_back(std::string("record:") + m_label); - return RecordRasterRenderPass( + return RecordColorDepthRasterPass( *this, - context, - { - false, - true, - true - }); + context); } bool Initialize(const RenderContext&) override { diff --git a/tests/Rendering/unit/test_render_graph_recording_context.cpp b/tests/Rendering/unit/test_render_graph_recording_context.cpp index b4c77e3a..43482e21 100644 --- a/tests/Rendering/unit/test_render_graph_recording_context.cpp +++ b/tests/Rendering/unit/test_render_graph_recording_context.cpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace { @@ -50,6 +51,24 @@ RenderPassContext BuildPassContext( } // namespace +TEST(RenderPassGraphContract_Test, BuildsSourceColorFullscreenRasterPassGraphIO) { + const RenderPassGraphIO io = + BuildSourceColorFullscreenRasterPassGraphIO(); + + EXPECT_TRUE(io.readSourceColor); + EXPECT_TRUE(io.writeColor); + EXPECT_FALSE(io.writeDepth); +} + +TEST(RenderPassGraphContract_Test, BuildsColorDepthRasterPassGraphIO) { + const RenderPassGraphIO io = + BuildColorDepthRasterPassGraphIO(); + + EXPECT_FALSE(io.readSourceColor); + EXPECT_TRUE(io.writeColor); + EXPECT_TRUE(io.writeDepth); +} + TEST(RenderGraphRecordingContext_Test, BuildsRenderPassContextFromSharedRecordingData) { RenderGraph graph = {}; RenderGraphBuilder builder(graph);