refactor(rendering): formalize camera frame stage contracts
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
#include "Rendering/Pipelines/ScriptableRenderPipelineHost.h"
|
||||
|
||||
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
|
||||
#include "Rendering/Passes/BuiltinObjectIdPass.h"
|
||||
#include "Rendering/Passes/BuiltinShadowCasterPass.h"
|
||||
#include "Rendering/Pipelines/BuiltinForwardPipeline.h"
|
||||
|
||||
namespace XCEngine {
|
||||
@@ -29,6 +32,18 @@ std::unique_ptr<RenderPipelineRenderer> CreateMainSceneRendererFromAsset(
|
||||
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()
|
||||
@@ -37,6 +52,7 @@ ScriptableRenderPipelineHost::ScriptableRenderPipelineHost()
|
||||
|
||||
ScriptableRenderPipelineHost::ScriptableRenderPipelineHost(
|
||||
std::unique_ptr<RenderPipelineRenderer> mainSceneRenderer) {
|
||||
InstallDefaultStandaloneStagePasses(*this);
|
||||
ResetMainSceneRenderer(std::move(mainSceneRenderer));
|
||||
}
|
||||
|
||||
@@ -46,6 +62,7 @@ ScriptableRenderPipelineHost::ScriptableRenderPipelineHost(
|
||||
mainSceneRendererAsset != nullptr
|
||||
? std::move(mainSceneRendererAsset)
|
||||
: CreateDefaultMainSceneRendererAsset()) {
|
||||
InstallDefaultStandaloneStagePasses(*this);
|
||||
ResetMainSceneRenderer(
|
||||
CreateMainSceneRendererFromAsset(m_mainSceneRendererAsset));
|
||||
}
|
||||
@@ -79,6 +96,7 @@ void ScriptableRenderPipelineHost::Shutdown() {
|
||||
if (m_mainSceneRenderer != nullptr) {
|
||||
m_mainSceneRenderer->Shutdown();
|
||||
}
|
||||
ShutdownCameraFrameStandalonePasses();
|
||||
}
|
||||
|
||||
bool ScriptableRenderPipelineHost::SupportsMainSceneRenderGraph() const {
|
||||
|
||||
Reference in New Issue
Block a user