refactor(rendering): add srp host stage recorder bridge
This commit is contained in:
@@ -13,6 +13,11 @@ ManagedRenderPipelineAssetDescriptor& GetManagedRenderPipelineAssetDescriptorSto
|
||||
return s_descriptor;
|
||||
}
|
||||
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge>& GetManagedRenderPipelineBridgeStorage() {
|
||||
static std::shared_ptr<const ManagedRenderPipelineBridge> s_bridge = nullptr;
|
||||
return s_bridge;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
|
||||
@@ -21,13 +26,40 @@ ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
|
||||
}
|
||||
|
||||
std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipeline() const {
|
||||
return m_fallbackAsset.CreatePipeline();
|
||||
std::unique_ptr<RenderPipeline> pipeline = m_fallbackAsset.CreatePipeline();
|
||||
auto* host = dynamic_cast<ScriptableRenderPipelineHost*>(pipeline.get());
|
||||
if (host == nullptr) {
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
const std::shared_ptr<const ManagedRenderPipelineBridge> bridge =
|
||||
GetManagedRenderPipelineBridgeStorage();
|
||||
if (bridge != nullptr) {
|
||||
host->SetStageRecorder(
|
||||
bridge->CreateStageRecorder(m_descriptor));
|
||||
}
|
||||
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
FinalColorSettings ManagedScriptableRenderPipelineAsset::GetDefaultFinalColorSettings() const {
|
||||
return m_fallbackAsset.GetDefaultFinalColorSettings();
|
||||
}
|
||||
|
||||
void SetManagedRenderPipelineBridge(
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge> bridge) {
|
||||
GetManagedRenderPipelineBridgeStorage() = std::move(bridge);
|
||||
}
|
||||
|
||||
void ClearManagedRenderPipelineBridge() {
|
||||
GetManagedRenderPipelineBridgeStorage().reset();
|
||||
}
|
||||
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge>
|
||||
GetManagedRenderPipelineBridge() {
|
||||
return GetManagedRenderPipelineBridgeStorage();
|
||||
}
|
||||
|
||||
void SetManagedRenderPipelineAssetDescriptor(
|
||||
const ManagedRenderPipelineAssetDescriptor& descriptor) {
|
||||
GetManagedRenderPipelineAssetDescriptorStorage() = descriptor;
|
||||
|
||||
Reference in New Issue
Block a user