Split builtin forward pipeline into feature and internal modules
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
#include "Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.h"
|
||||
|
||||
#include "Rendering/Features/BuiltinGaussianSplatPass.h"
|
||||
#include "Rendering/Features/BuiltinVolumetricPass.h"
|
||||
#include "Rendering/SceneRenderFeatureHost.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
namespace Pipelines {
|
||||
namespace Internal {
|
||||
namespace {
|
||||
|
||||
constexpr ForwardSceneStep MakeForwardSceneInjectionStep(SceneRenderInjectionPoint injectionPoint) {
|
||||
ForwardSceneStep step = {};
|
||||
step.type = ForwardSceneStepType::InjectionPoint;
|
||||
step.injectionPoint = injectionPoint;
|
||||
return step;
|
||||
}
|
||||
|
||||
constexpr ForwardSceneStep MakeForwardSceneBuiltinPhaseStep(ScenePhase scenePhase) {
|
||||
ForwardSceneStep step = {};
|
||||
step.type = ForwardSceneStepType::BuiltinPhase;
|
||||
step.scenePhase = scenePhase;
|
||||
return step;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
const std::array<ForwardSceneStep, 9>& GetBuiltinForwardSceneSteps() {
|
||||
static constexpr std::array<ForwardSceneStep, 9> kForwardSceneSteps = {
|
||||
MakeForwardSceneInjectionStep(SceneRenderInjectionPoint::BeforeOpaque),
|
||||
MakeForwardSceneBuiltinPhaseStep(ScenePhase::Opaque),
|
||||
MakeForwardSceneInjectionStep(SceneRenderInjectionPoint::AfterOpaque),
|
||||
MakeForwardSceneInjectionStep(SceneRenderInjectionPoint::BeforeSkybox),
|
||||
MakeForwardSceneBuiltinPhaseStep(ScenePhase::Skybox),
|
||||
MakeForwardSceneInjectionStep(SceneRenderInjectionPoint::AfterSkybox),
|
||||
MakeForwardSceneInjectionStep(SceneRenderInjectionPoint::BeforeTransparent),
|
||||
MakeForwardSceneBuiltinPhaseStep(ScenePhase::Transparent),
|
||||
MakeForwardSceneInjectionStep(SceneRenderInjectionPoint::AfterTransparent)
|
||||
};
|
||||
return kForwardSceneSteps;
|
||||
}
|
||||
|
||||
void RegisterBuiltinForwardSceneFeatures(SceneRenderFeatureHost& featureHost) {
|
||||
featureHost.AddFeaturePass(std::make_unique<Features::BuiltinGaussianSplatPass>());
|
||||
featureHost.AddFeaturePass(std::make_unique<Features::BuiltinVolumetricPass>());
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Pipelines
|
||||
} // namespace Rendering
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user