From 788b1b971e4d627fb4f5ff191b194156ac3e6288 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Sat, 18 Apr 2026 13:36:37 +0800 Subject: [PATCH] refactor(rendering): rename native scene recorder seam --- engine/CMakeLists.txt | 4 +-- .../Pipelines/BuiltinForwardPipeline.h | 2 -- ...dSceneRecorder.h => NativeSceneRecorder.h} | 10 +++---- .../BuiltinForwardStageGraphBuilder.cpp | 4 +-- ...neRecorder.cpp => NativeSceneRecorder.cpp} | 30 +++++++++---------- .../src/Scripting/Mono/MonoScriptRuntime.cpp | 6 ++-- .../unit/test_builtin_forward_pipeline.cpp | 10 +++---- 7 files changed, 32 insertions(+), 34 deletions(-) rename engine/include/XCEngine/Rendering/Pipelines/{BuiltinForwardSceneRecorder.h => NativeSceneRecorder.h} (86%) rename engine/src/Rendering/Pipelines/{BuiltinForwardSceneRecorder.cpp => NativeSceneRecorder.cpp} (86%) diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 7299f654..40f34987 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -553,7 +553,7 @@ add_library(XCEngine STATIC ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Features/BuiltinGaussianSplatPass.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Features/BuiltinVolumetricPass.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h - ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/BuiltinForwardSceneRecorder.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/NativeSceneRecorder.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/ScriptableRenderPipelineHost.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Execution/CameraFramePlan.cpp @@ -617,7 +617,7 @@ add_library(XCEngine STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Shadow/DirectionalShadowRuntime.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Execution/SceneRenderer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Pipelines/BuiltinForwardPipeline.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Pipelines/BuiltinForwardSceneRecorder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Pipelines/NativeSceneRecorder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Pipelines/ScriptableRenderPipelineHost.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.cpp diff --git a/engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h b/engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h index e4161393..0370ee2e 100644 --- a/engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h +++ b/engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h @@ -47,8 +47,6 @@ struct BuiltinForwardStageGraphBuilder; namespace Pipelines { -class BuiltinForwardSceneRecorder; - class BuiltinForwardPipeline : public RenderPipeline, public NativeSceneRenderer { public: BuiltinForwardPipeline(); diff --git a/engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardSceneRecorder.h b/engine/include/XCEngine/Rendering/Pipelines/NativeSceneRecorder.h similarity index 86% rename from engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardSceneRecorder.h rename to engine/include/XCEngine/Rendering/Pipelines/NativeSceneRecorder.h index e46fb753..94d53e3c 100644 --- a/engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardSceneRecorder.h +++ b/engine/include/XCEngine/Rendering/Pipelines/NativeSceneRecorder.h @@ -16,14 +16,14 @@ struct RenderPipelineStageRenderGraphContext; namespace Pipelines { -struct BuiltinForwardSceneRecorderState; +struct NativeSceneRecorderState; -class BuiltinForwardSceneRecorder { +class NativeSceneRecorder { public: - BuiltinForwardSceneRecorder( + NativeSceneRecorder( NativeSceneRenderer& sceneRenderer, const RenderPipelineStageRenderGraphContext& context); - ~BuiltinForwardSceneRecorder(); + ~NativeSceneRecorder(); bool RecordDefaultScene(); bool RecordScenePhase(ScenePhase scenePhase); @@ -40,7 +40,7 @@ private: RenderSurface m_graphManagedSurface = {}; RenderGraphTextureHandle m_mainDirectionalShadowTexture = {}; bool m_clearAttachments = true; - std::shared_ptr m_state; + std::shared_ptr m_state; }; } // namespace Pipelines diff --git a/engine/src/Rendering/Pipelines/Internal/BuiltinForwardStageGraphBuilder.cpp b/engine/src/Rendering/Pipelines/Internal/BuiltinForwardStageGraphBuilder.cpp index 5d3a1247..18865bcc 100644 --- a/engine/src/Rendering/Pipelines/Internal/BuiltinForwardStageGraphBuilder.cpp +++ b/engine/src/Rendering/Pipelines/Internal/BuiltinForwardStageGraphBuilder.cpp @@ -1,7 +1,7 @@ #include "Rendering/Pipelines/Internal/BuiltinForwardStageGraphBuilder.h" #include "Rendering/Pipelines/BuiltinForwardPipeline.h" -#include +#include namespace XCEngine { namespace Rendering { @@ -11,7 +11,7 @@ namespace Internal { bool BuiltinForwardStageGraphBuilder::Record( BuiltinForwardPipeline& pipeline, const RenderPipelineStageRenderGraphContext& context) { - BuiltinForwardSceneRecorder recorder(pipeline, context); + NativeSceneRecorder recorder(pipeline, context); return recorder.RecordDefaultScene(); } diff --git a/engine/src/Rendering/Pipelines/BuiltinForwardSceneRecorder.cpp b/engine/src/Rendering/Pipelines/NativeSceneRecorder.cpp similarity index 86% rename from engine/src/Rendering/Pipelines/BuiltinForwardSceneRecorder.cpp rename to engine/src/Rendering/Pipelines/NativeSceneRecorder.cpp index 9f6e62b3..ab6b7aa3 100644 --- a/engine/src/Rendering/Pipelines/BuiltinForwardSceneRecorder.cpp +++ b/engine/src/Rendering/Pipelines/NativeSceneRecorder.cpp @@ -1,4 +1,4 @@ -#include +#include #include "Debug/Logger.h" #include "Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.h" @@ -15,7 +15,7 @@ namespace XCEngine { namespace Rendering { namespace Pipelines { -struct BuiltinForwardSceneRecorderState { +struct NativeSceneRecorderState { bool initialized = false; }; @@ -28,14 +28,14 @@ bool ScenePhaseSamplesMainDirectionalShadow(ScenePhase scenePhase) { } // namespace -BuiltinForwardSceneRecorder::BuiltinForwardSceneRecorder( +NativeSceneRecorder::NativeSceneRecorder( NativeSceneRenderer& sceneRenderer, const RenderPipelineStageRenderGraphContext& context) : m_sceneRenderer(sceneRenderer) , m_context(context) , m_graphManagedSurface( BuildRenderGraphManagedSurfaceTemplate(context.surfaceTemplate)) - , m_state(std::make_shared()) { + , m_state(std::make_shared()) { const CameraFrameRenderGraphResources* const frameResources = TryGetCameraFrameRenderGraphResources(context.blackboard); if (frameResources != nullptr) { @@ -43,13 +43,13 @@ BuiltinForwardSceneRecorder::BuiltinForwardSceneRecorder( } } -BuiltinForwardSceneRecorder::~BuiltinForwardSceneRecorder() = default; +NativeSceneRecorder::~NativeSceneRecorder() = default; SceneRenderFeaturePassBeginCallback -BuiltinForwardSceneRecorder::BuildBeginRecordedPassCallback( +NativeSceneRecorder::BuildBeginRecordedPassCallback( bool* executionSucceeded) const { NativeSceneRenderer& sceneRenderer = m_sceneRenderer; - const std::shared_ptr state = m_state; + const std::shared_ptr state = m_state; return [&sceneRenderer, state, executionSucceeded]( const RenderPassContext& passContext, bool clearAttachments) -> bool { @@ -62,7 +62,7 @@ BuiltinForwardSceneRecorder::BuildBeginRecordedPassCallback( if (!sceneRenderer.Initialize(passContext.renderContext)) { Debug::Logger::Get().Error( Debug::LogCategory::Rendering, - "BuiltinForwardSceneRecorder failed during execution: Initialize returned false"); + "NativeSceneRecorder failed during execution: Initialize returned false"); if (executionSucceeded != nullptr) { *executionSucceeded = false; } @@ -79,7 +79,7 @@ BuiltinForwardSceneRecorder::BuildBeginRecordedPassCallback( if (!sceneRenderer.PrepareScene(executionContext)) { Debug::Logger::Get().Error( Debug::LogCategory::Rendering, - "BuiltinForwardSceneRecorder failed during execution: NativeSceneRenderer::PrepareScene returned false"); + "NativeSceneRecorder failed during execution: NativeSceneRenderer::PrepareScene returned false"); if (executionSucceeded != nullptr) { *executionSucceeded = false; } @@ -94,7 +94,7 @@ BuiltinForwardSceneRecorder::BuildBeginRecordedPassCallback( clearAttachments)) { Debug::Logger::Get().Error( Debug::LogCategory::Rendering, - "BuiltinForwardSceneRecorder failed during execution: NativeSceneRenderer::BeginScenePass returned false"); + "NativeSceneRecorder failed during execution: NativeSceneRenderer::BeginScenePass returned false"); if (executionSucceeded != nullptr) { *executionSucceeded = false; } @@ -106,14 +106,14 @@ BuiltinForwardSceneRecorder::BuildBeginRecordedPassCallback( } SceneRenderFeaturePassEndCallback -BuiltinForwardSceneRecorder::BuildEndRecordedPassCallback() const { +NativeSceneRecorder::BuildEndRecordedPassCallback() const { NativeSceneRenderer& sceneRenderer = m_sceneRenderer; return [&sceneRenderer](const RenderPassContext& passContext) { sceneRenderer.EndScenePass(passContext); }; } -bool BuiltinForwardSceneRecorder::RecordDefaultScene() { +bool NativeSceneRecorder::RecordDefaultScene() { if (m_context.stage != CameraFrameStage::MainScene) { return false; } @@ -135,7 +135,7 @@ bool BuiltinForwardSceneRecorder::RecordDefaultScene() { return true; } -bool BuiltinForwardSceneRecorder::RecordScenePhase( +bool NativeSceneRecorder::RecordScenePhase( ScenePhase scenePhase) { if (m_context.stage != CameraFrameStage::MainScene) { return false; @@ -179,7 +179,7 @@ bool BuiltinForwardSceneRecorder::RecordScenePhase( return true; } -bool BuiltinForwardSceneRecorder::RecordInjectionPoint( +bool NativeSceneRecorder::RecordInjectionPoint( SceneRenderInjectionPoint injectionPoint) { if (m_context.stage != CameraFrameStage::MainScene) { return false; @@ -215,7 +215,7 @@ bool BuiltinForwardSceneRecorder::RecordInjectionPoint( } RenderPipelineStageRenderGraphContext -BuiltinForwardSceneRecorder::BuildGraphContext() const { +NativeSceneRecorder::BuildGraphContext() const { const RenderGraphRecordingContext baseRecordingContext = BuildRenderGraphRecordingContext(m_context); RenderGraphRecordingContextBuildParams recordingParams = {}; diff --git a/engine/src/Scripting/Mono/MonoScriptRuntime.cpp b/engine/src/Scripting/Mono/MonoScriptRuntime.cpp index 4aeee727..45d07589 100644 --- a/engine/src/Scripting/Mono/MonoScriptRuntime.cpp +++ b/engine/src/Scripting/Mono/MonoScriptRuntime.cpp @@ -13,7 +13,7 @@ #include "Rendering/Execution/CameraFramePlan.h" #include "Rendering/Internal/RenderPipelineFactory.h" #include "Rendering/Passes/BuiltinColorScalePostProcessPass.h" -#include "Rendering/Pipelines/BuiltinForwardSceneRecorder.h" +#include "Rendering/Pipelines/NativeSceneRecorder.h" #include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h" #include "Rendering/RenderPipelineStageGraphContract.h" #include "Scene/Scene.h" @@ -92,7 +92,7 @@ struct ManagedScriptableRenderContextState { uint64_t handle = 0; Rendering::CameraFrameStage stage = Rendering::CameraFrameStage::MainScene; const Rendering::RenderPipelineStageRenderGraphContext* graphContext = nullptr; - Rendering::Pipelines::BuiltinForwardSceneRecorder* sceneRecorder = nullptr; + Rendering::Pipelines::NativeSceneRecorder* sceneRecorder = nullptr; std::vector queuedColorScaleFullscreenPasses = {}; }; @@ -473,7 +473,7 @@ public: if (m_defaultSceneRenderer == nullptr) { return false; } - Rendering::Pipelines::BuiltinForwardSceneRecorder sceneRecorder( + Rendering::Pipelines::NativeSceneRecorder sceneRecorder( *m_defaultSceneRenderer, context); managedContextState.sceneRecorder = &sceneRecorder; diff --git a/tests/Rendering/unit/test_builtin_forward_pipeline.cpp b/tests/Rendering/unit/test_builtin_forward_pipeline.cpp index 4e33a88a..09cb42e2 100644 --- a/tests/Rendering/unit/test_builtin_forward_pipeline.cpp +++ b/tests/Rendering/unit/test_builtin_forward_pipeline.cpp @@ -16,7 +16,7 @@ #define private public #include #undef private -#include +#include #include #include #include @@ -744,7 +744,7 @@ TEST(BuiltinForwardPipeline_Test, RecordsMainSceneGraphPassWithSampledShadowDepe EXPECT_EQ(depthPlan.lastAccessState, ResourceStates::DepthWrite); } -TEST(BuiltinForwardSceneRecorder_Test, RecordsExplicitSceneStepsInCallerOrder) { +TEST(NativeSceneRecorder_Test, RecordsExplicitSceneStepsInCallerOrder) { BuiltinForwardPipeline pipeline; pipeline.m_forwardSceneFeatureHost.m_featurePasses.clear(); @@ -822,7 +822,7 @@ TEST(BuiltinForwardSceneRecorder_Test, RecordsExplicitSceneStepsInCallerOrder) { &blackboard }; - BuiltinForwardSceneRecorder recorder(pipeline, context); + NativeSceneRecorder recorder(pipeline, context); ASSERT_TRUE(recorder.RecordInjectionPoint(SceneRenderInjectionPoint::BeforeOpaque)); ASSERT_TRUE(recorder.RecordScenePhase(ScenePhase::Opaque)); ASSERT_TRUE(recorder.RecordInjectionPoint(SceneRenderInjectionPoint::AfterOpaque)); @@ -843,7 +843,7 @@ TEST(BuiltinForwardSceneRecorder_Test, RecordsExplicitSceneStepsInCallerOrder) { "MainScene.AfterOpaque.AfterOpaqueFeature.1"); } -TEST(BuiltinForwardSceneRecorder_Test, RecordsSceneStepsThroughNativeSceneRendererContract) { +TEST(NativeSceneRecorder_Test, RecordsSceneStepsThroughNativeSceneRendererContract) { MockNativeSceneRenderer sceneRenderer; std::vector eventLog = {}; auto beforeOpaqueFeature = std::make_unique( @@ -926,7 +926,7 @@ TEST(BuiltinForwardSceneRecorder_Test, RecordsSceneStepsThroughNativeSceneRender &blackboard }; - BuiltinForwardSceneRecorder recorder(sceneRenderer, context); + NativeSceneRecorder recorder(sceneRenderer, context); ASSERT_TRUE(recorder.RecordInjectionPoint(SceneRenderInjectionPoint::BeforeOpaque)); ASSERT_TRUE(recorder.RecordScenePhase(ScenePhase::Opaque)); ASSERT_TRUE(recorder.RecordInjectionPoint(SceneRenderInjectionPoint::AfterOpaque));