Split builtin forward pipeline into feature and internal modules

This commit is contained in:
2026-04-14 20:50:31 +08:00
parent e1734181a0
commit 1d171ea61c
19 changed files with 1727 additions and 1204 deletions

View File

@@ -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