refactor(srp): decouple managed pipeline assets from fixed native backend

This commit is contained in:
2026-04-19 21:46:05 +08:00
parent 20e727e882
commit 74e790891c
4 changed files with 283 additions and 3 deletions

View File

@@ -37,9 +37,33 @@ ManagedScriptableRenderPipelineAsset::ResolveManagedAssetRuntime() const {
return m_managedAssetRuntime;
}
std::shared_ptr<const RenderPipelineAsset>
ManagedScriptableRenderPipelineAsset::ResolvePipelineRendererAsset() const {
if (const std::shared_ptr<const ManagedRenderPipelineAssetRuntime> runtime =
ResolveManagedAssetRuntime();
runtime != nullptr) {
return runtime->GetPipelineRendererAsset();
}
return nullptr;
}
ScriptableRenderPipelineHostAsset
ManagedScriptableRenderPipelineAsset::CreateExecutionHostAsset() const {
if (const std::shared_ptr<const RenderPipelineAsset> pipelineRendererAsset =
ResolvePipelineRendererAsset();
pipelineRendererAsset != nullptr) {
return ScriptableRenderPipelineHostAsset(pipelineRendererAsset);
}
return ScriptableRenderPipelineHostAsset();
}
std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipeline() const {
const ScriptableRenderPipelineHostAsset executionHostAsset =
CreateExecutionHostAsset();
std::unique_ptr<RenderPipeline> pipeline =
m_executionHostAsset.CreatePipeline();
executionHostAsset.CreatePipeline();
auto* host = dynamic_cast<ScriptableRenderPipelineHost*>(pipeline.get());
if (host == nullptr) {
return pipeline;
@@ -86,7 +110,9 @@ FinalColorSettings ManagedScriptableRenderPipelineAsset::GetDefaultFinalColorSet
}
}
return m_executionHostAsset.GetDefaultFinalColorSettings();
const ScriptableRenderPipelineHostAsset executionHostAsset =
CreateExecutionHostAsset();
return executionHostAsset.GetDefaultFinalColorSettings();
}
void SetManagedRenderPipelineBridge(