fix(rendering): rebind managed srp asset runtime after bridge reset
This commit is contained in:
@@ -18,6 +18,11 @@ std::shared_ptr<const ManagedRenderPipelineBridge>& GetManagedRenderPipelineBrid
|
||||
return s_bridge;
|
||||
}
|
||||
|
||||
size_t& GetManagedRenderPipelineBridgeGenerationStorage() {
|
||||
static size_t s_generation = 1u;
|
||||
return s_generation;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
|
||||
@@ -27,10 +32,16 @@ ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
|
||||
|
||||
std::shared_ptr<const ManagedRenderPipelineAssetRuntime>
|
||||
ManagedScriptableRenderPipelineAsset::ResolveManagedAssetRuntime() const {
|
||||
if (m_managedAssetRuntime != nullptr) {
|
||||
const size_t bridgeGeneration =
|
||||
GetManagedRenderPipelineBridgeGenerationStorage();
|
||||
if (m_managedAssetRuntime != nullptr &&
|
||||
m_managedAssetRuntimeBridgeGeneration == bridgeGeneration) {
|
||||
return m_managedAssetRuntime;
|
||||
}
|
||||
|
||||
m_managedAssetRuntime.reset();
|
||||
m_managedAssetRuntimeBridgeGeneration = bridgeGeneration;
|
||||
|
||||
const std::shared_ptr<const ManagedRenderPipelineBridge> bridge =
|
||||
GetManagedRenderPipelineBridgeStorage();
|
||||
if (bridge == nullptr) {
|
||||
@@ -97,10 +108,12 @@ void ManagedScriptableRenderPipelineAsset::ConfigureCameraFramePlan(
|
||||
void SetManagedRenderPipelineBridge(
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge> bridge) {
|
||||
GetManagedRenderPipelineBridgeStorage() = std::move(bridge);
|
||||
++GetManagedRenderPipelineBridgeGenerationStorage();
|
||||
}
|
||||
|
||||
void ClearManagedRenderPipelineBridge() {
|
||||
GetManagedRenderPipelineBridgeStorage().reset();
|
||||
++GetManagedRenderPipelineBridgeGenerationStorage();
|
||||
}
|
||||
|
||||
std::shared_ptr<const ManagedRenderPipelineBridge>
|
||||
|
||||
Reference in New Issue
Block a user