Add builtin GaussianSplat forward pass baseline
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "Core/Asset/ResourceManager.h"
|
||||
#include "RHI/RHICommandList.h"
|
||||
#include "Rendering/Internal/RenderSurfacePipelineUtils.h"
|
||||
#include "Rendering/Passes/BuiltinGaussianSplatPass.h"
|
||||
#include "Rendering/Materials/RenderMaterialResolve.h"
|
||||
#include "Rendering/Passes/BuiltinVolumetricPass.h"
|
||||
#include "Rendering/RenderSurface.h"
|
||||
@@ -66,6 +67,7 @@ std::vector<RHI::RHIResourceView*> CollectSurfaceColorAttachments(const RenderSu
|
||||
} // namespace
|
||||
|
||||
BuiltinForwardPipeline::BuiltinForwardPipeline() {
|
||||
m_gaussianSplatPass = std::make_unique<Passes::BuiltinGaussianSplatPass>();
|
||||
m_volumetricPass = std::make_unique<Passes::BuiltinVolumetricPass>();
|
||||
}
|
||||
|
||||
@@ -109,11 +111,16 @@ RHI::InputLayoutDesc BuiltinForwardPipeline::BuildInputLayout() {
|
||||
|
||||
bool BuiltinForwardPipeline::Initialize(const RenderContext& context) {
|
||||
return EnsureInitialized(context) &&
|
||||
m_gaussianSplatPass != nullptr &&
|
||||
m_gaussianSplatPass->Initialize(context) &&
|
||||
m_volumetricPass != nullptr &&
|
||||
m_volumetricPass->Initialize(context);
|
||||
}
|
||||
|
||||
void BuiltinForwardPipeline::Shutdown() {
|
||||
if (m_gaussianSplatPass != nullptr) {
|
||||
m_gaussianSplatPass->Shutdown();
|
||||
}
|
||||
if (m_volumetricPass != nullptr) {
|
||||
m_volumetricPass->Shutdown();
|
||||
}
|
||||
@@ -128,6 +135,17 @@ bool BuiltinForwardPipeline::Render(
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m_volumetricPass != nullptr &&
|
||||
!sceneData.visibleVolumes.empty() &&
|
||||
!m_volumetricPass->PrepareVolumeResources(context, sceneData)) {
|
||||
return false;
|
||||
}
|
||||
if (m_gaussianSplatPass != nullptr &&
|
||||
!sceneData.visibleGaussianSplats.empty() &&
|
||||
!m_gaussianSplatPass->PrepareGaussianSplatResources(context, sceneData)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const RenderPassContext passContext = {
|
||||
context,
|
||||
surface,
|
||||
@@ -150,6 +168,9 @@ bool BuiltinForwardPipeline::Render(
|
||||
if (renderResult) {
|
||||
renderResult = ExecuteForwardSkyboxPass(passContext);
|
||||
}
|
||||
if (renderResult && m_gaussianSplatPass != nullptr) {
|
||||
renderResult = m_gaussianSplatPass->Execute(passContext);
|
||||
}
|
||||
if (renderResult && m_volumetricPass != nullptr) {
|
||||
renderResult = m_volumetricPass->Execute(passContext);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user