refactor(srp): move native scene feature registration into backend setup
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "Rendering/Execution/DirectionalShadowExecutionState.h"
|
||||
#include "Rendering/Pipelines/BuiltinForwardPipeline.h"
|
||||
#include "Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.h"
|
||||
#include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h"
|
||||
#include "Rendering/Pipelines/ScriptableRenderPipelineHost.h"
|
||||
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
|
||||
@@ -160,7 +161,14 @@ std::unique_ptr<SceneDrawBackend> CreateSceneDrawBackendFromAsset(
|
||||
}
|
||||
|
||||
std::unique_ptr<SceneDrawBackend> CreateDefaultSceneDrawBackend() {
|
||||
return std::make_unique<Pipelines::BuiltinForwardPipeline>();
|
||||
if (std::unique_ptr<SceneDrawBackend> sceneDrawBackend =
|
||||
TryCreateSceneDrawBackendFromAsset(
|
||||
CreateDefaultPipelineBackendAsset());
|
||||
sceneDrawBackend != nullptr) {
|
||||
return sceneDrawBackend;
|
||||
}
|
||||
|
||||
return Pipelines::Internal::CreateConfiguredBuiltinForwardPipeline();
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -6,9 +6,7 @@ namespace XCEngine {
|
||||
namespace Rendering {
|
||||
namespace Pipelines {
|
||||
|
||||
BuiltinForwardPipeline::BuiltinForwardPipeline() {
|
||||
Internal::RegisterBuiltinForwardSceneFeatures(m_forwardSceneFeatureHost);
|
||||
}
|
||||
BuiltinForwardPipeline::BuiltinForwardPipeline() = default;
|
||||
|
||||
BuiltinForwardPipeline::~BuiltinForwardPipeline() {
|
||||
Shutdown();
|
||||
@@ -28,7 +26,7 @@ SceneRenderFeaturePass* BuiltinForwardPipeline::GetForwardSceneFeaturePass(size_
|
||||
}
|
||||
|
||||
std::unique_ptr<RenderPipeline> BuiltinForwardPipelineAsset::CreatePipeline() const {
|
||||
return std::make_unique<BuiltinForwardPipeline>();
|
||||
return Internal::CreateConfiguredBuiltinForwardPipeline();
|
||||
}
|
||||
|
||||
} // namespace Pipelines
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "Rendering/Features/BuiltinGaussianSplatPass.h"
|
||||
#include "Rendering/Features/BuiltinVolumetricPass.h"
|
||||
#include "Rendering/SceneRenderFeatureHost.h"
|
||||
#include "Rendering/Pipelines/BuiltinForwardPipeline.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
@@ -11,9 +11,20 @@ namespace Rendering {
|
||||
namespace Pipelines {
|
||||
namespace Internal {
|
||||
|
||||
void RegisterBuiltinForwardSceneFeatures(SceneRenderFeatureHost& featureHost) {
|
||||
featureHost.AddFeaturePass(std::make_unique<Features::BuiltinGaussianSplatPass>());
|
||||
featureHost.AddFeaturePass(std::make_unique<Features::BuiltinVolumetricPass>());
|
||||
void ConfigureBuiltinForwardPipeline(
|
||||
BuiltinForwardPipeline& pipeline) {
|
||||
pipeline.AddForwardSceneFeaturePass(
|
||||
std::make_unique<Features::BuiltinGaussianSplatPass>());
|
||||
pipeline.AddForwardSceneFeaturePass(
|
||||
std::make_unique<Features::BuiltinVolumetricPass>());
|
||||
}
|
||||
|
||||
std::unique_ptr<BuiltinForwardPipeline>
|
||||
CreateConfiguredBuiltinForwardPipeline() {
|
||||
std::unique_ptr<BuiltinForwardPipeline> pipeline =
|
||||
std::make_unique<BuiltinForwardPipeline>();
|
||||
ConfigureBuiltinForwardPipeline(*pipeline);
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
class SceneRenderFeatureHost;
|
||||
|
||||
namespace Pipelines {
|
||||
class BuiltinForwardPipeline;
|
||||
|
||||
namespace Internal {
|
||||
|
||||
void RegisterBuiltinForwardSceneFeatures(SceneRenderFeatureHost& featureHost);
|
||||
void ConfigureBuiltinForwardPipeline(
|
||||
BuiltinForwardPipeline& pipeline);
|
||||
std::unique_ptr<BuiltinForwardPipeline>
|
||||
CreateConfiguredBuiltinForwardPipeline();
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Pipelines
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "Rendering/Execution/DirectionalShadowExecutionState.h"
|
||||
#include "Rendering/Internal/RenderPipelineFactory.h"
|
||||
#include "Rendering/Pipelines/BuiltinForwardPipeline.h"
|
||||
#include "Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.h"
|
||||
#include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h"
|
||||
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
|
||||
#include "Rendering/Passes/BuiltinObjectIdPass.h"
|
||||
@@ -30,7 +31,7 @@ std::unique_ptr<RenderPipelineBackend> CreatePipelineBackendFromAsset(
|
||||
}
|
||||
}
|
||||
|
||||
return std::make_unique<BuiltinForwardPipeline>();
|
||||
return Internal::CreateConfiguredBuiltinForwardPipeline();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user