refactor(rendering): move host standalone pass defaults into assets

This commit is contained in:
2026-04-15 21:32:50 +08:00
parent f2eebfc842
commit 02438762fd
5 changed files with 51 additions and 19 deletions

View File

@@ -1,9 +1,9 @@
#include "Rendering/Pipelines/ScriptableRenderPipelineHost.h"
#include "Rendering/Pipelines/BuiltinForwardPipeline.h"
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
#include "Rendering/Passes/BuiltinObjectIdPass.h"
#include "Rendering/Passes/BuiltinShadowCasterPass.h"
#include "Rendering/Pipelines/BuiltinForwardPipeline.h"
namespace XCEngine {
namespace Rendering {
@@ -32,18 +32,6 @@ std::unique_ptr<RenderPipelineRenderer> CreatePipelineRendererFromAsset(
return std::make_unique<BuiltinForwardPipeline>();
}
void InstallDefaultStandaloneStagePasses(RenderPipeline& pipeline) {
pipeline.SetCameraFrameStandalonePass(
CameraFrameStage::ObjectId,
std::make_unique<Passes::BuiltinObjectIdPass>());
pipeline.SetCameraFrameStandalonePass(
CameraFrameStage::DepthOnly,
std::make_unique<Passes::BuiltinDepthOnlyPass>());
pipeline.SetCameraFrameStandalonePass(
CameraFrameStage::ShadowCaster,
std::make_unique<Passes::BuiltinShadowCasterPass>());
}
} // namespace
ScriptableRenderPipelineHost::ScriptableRenderPipelineHost()
@@ -52,7 +40,6 @@ ScriptableRenderPipelineHost::ScriptableRenderPipelineHost()
ScriptableRenderPipelineHost::ScriptableRenderPipelineHost(
std::unique_ptr<RenderPipelineRenderer> pipelineRenderer) {
InstallDefaultStandaloneStagePasses(*this);
ResetPipelineRenderer(std::move(pipelineRenderer));
}
@@ -62,7 +49,6 @@ ScriptableRenderPipelineHost::ScriptableRenderPipelineHost(
pipelineRendererAsset != nullptr
? std::move(pipelineRendererAsset)
: CreateDefaultPipelineRendererAsset()) {
InstallDefaultStandaloneStagePasses(*this);
ResetPipelineRenderer(
CreatePipelineRendererFromAsset(m_pipelineRendererAsset));
}
@@ -267,8 +253,27 @@ ScriptableRenderPipelineHostAsset::ScriptableRenderPipelineHostAsset(
}
std::unique_ptr<RenderPipeline> ScriptableRenderPipelineHostAsset::CreatePipeline() const {
return std::make_unique<ScriptableRenderPipelineHost>(
m_pipelineRendererAsset);
std::unique_ptr<RenderPipeline> pipeline =
std::make_unique<ScriptableRenderPipelineHost>(
m_pipelineRendererAsset);
if (pipeline != nullptr) {
ConfigurePipeline(*pipeline);
}
return pipeline;
}
void ScriptableRenderPipelineHostAsset::ConfigurePipeline(
RenderPipeline& pipeline) const {
pipeline.SetCameraFrameStandalonePass(
CameraFrameStage::ObjectId,
std::make_unique<Passes::BuiltinObjectIdPass>());
pipeline.SetCameraFrameStandalonePass(
CameraFrameStage::DepthOnly,
std::make_unique<Passes::BuiltinDepthOnlyPass>());
pipeline.SetCameraFrameStandalonePass(
CameraFrameStage::ShadowCaster,
std::make_unique<Passes::BuiltinShadowCasterPass>());
}
FinalColorSettings ScriptableRenderPipelineHostAsset::GetDefaultFinalColorSettings() const {