refactor(rendering): retain managed pipeline asset runtime per native asset
This commit is contained in:
@@ -25,6 +25,22 @@ ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
|
||||
: m_descriptor(std::move(descriptor)) {
|
||||
}
|
||||
|
||||
std::shared_ptr<const ManagedRenderPipelineAssetRuntime>
|
||||
ManagedScriptableRenderPipelineAsset::ResolveManagedAssetRuntime() const {
|
||||
if (m_managedAssetRuntime != nullptr) {
|
||||
return m_managedAssetRuntime;
|
||||
}
|
||||
|
||||
const std::shared_ptr<const ManagedRenderPipelineBridge> bridge =
|
||||
GetManagedRenderPipelineBridgeStorage();
|
||||
if (bridge == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
m_managedAssetRuntime = bridge->CreateAssetRuntime(m_descriptor);
|
||||
return m_managedAssetRuntime;
|
||||
}
|
||||
|
||||
std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipeline() const {
|
||||
std::unique_ptr<RenderPipeline> pipeline = m_fallbackAsset.CreatePipeline();
|
||||
auto* host = dynamic_cast<ScriptableRenderPipelineHost*>(pipeline.get());
|
||||
@@ -32,11 +48,10 @@ std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipe
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
const std::shared_ptr<const ManagedRenderPipelineBridge> bridge =
|
||||
GetManagedRenderPipelineBridgeStorage();
|
||||
if (bridge != nullptr) {
|
||||
host->SetStageRecorder(
|
||||
bridge->CreateStageRecorder(m_descriptor));
|
||||
if (const std::shared_ptr<const ManagedRenderPipelineAssetRuntime> runtime =
|
||||
ResolveManagedAssetRuntime();
|
||||
runtime != nullptr) {
|
||||
host->SetStageRecorder(runtime->CreateStageRecorder());
|
||||
}
|
||||
|
||||
return pipeline;
|
||||
@@ -50,10 +65,10 @@ void ManagedScriptableRenderPipelineAsset::ConfigureCameraFramePlan(
|
||||
CameraFramePlan& plan) const {
|
||||
RenderPipelineAsset::ConfigureCameraFramePlan(plan);
|
||||
|
||||
const std::shared_ptr<const ManagedRenderPipelineBridge> bridge =
|
||||
GetManagedRenderPipelineBridgeStorage();
|
||||
if (bridge != nullptr) {
|
||||
bridge->ConfigureCameraFramePlan(m_descriptor, plan);
|
||||
if (const std::shared_ptr<const ManagedRenderPipelineAssetRuntime> runtime =
|
||||
ResolveManagedAssetRuntime();
|
||||
runtime != nullptr) {
|
||||
runtime->ConfigureCameraFramePlan(plan);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user