fix(rendering): refresh managed pipelines on srp environment changes

This commit is contained in:
2026-04-18 01:10:45 +08:00
parent e388b6fbe3
commit df02a4e741
5 changed files with 140 additions and 3 deletions

View File

@@ -23,6 +23,11 @@ size_t& GetManagedRenderPipelineBridgeGenerationStorage() {
return s_generation;
}
size_t& GetManagedRenderPipelineEnvironmentGenerationStorage() {
static size_t s_generation = 1u;
return s_generation;
}
} // namespace
ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
@@ -109,11 +114,13 @@ void SetManagedRenderPipelineBridge(
std::shared_ptr<const ManagedRenderPipelineBridge> bridge) {
GetManagedRenderPipelineBridgeStorage() = std::move(bridge);
++GetManagedRenderPipelineBridgeGenerationStorage();
++GetManagedRenderPipelineEnvironmentGenerationStorage();
}
void ClearManagedRenderPipelineBridge() {
GetManagedRenderPipelineBridgeStorage().reset();
++GetManagedRenderPipelineBridgeGenerationStorage();
++GetManagedRenderPipelineEnvironmentGenerationStorage();
}
std::shared_ptr<const ManagedRenderPipelineBridge>
@@ -121,13 +128,19 @@ GetManagedRenderPipelineBridge() {
return GetManagedRenderPipelineBridgeStorage();
}
size_t GetManagedRenderPipelineEnvironmentGeneration() {
return GetManagedRenderPipelineEnvironmentGenerationStorage();
}
void SetManagedRenderPipelineAssetDescriptor(
const ManagedRenderPipelineAssetDescriptor& descriptor) {
GetManagedRenderPipelineAssetDescriptorStorage() = descriptor;
++GetManagedRenderPipelineEnvironmentGenerationStorage();
}
void ClearManagedRenderPipelineAssetDescriptor() {
GetManagedRenderPipelineAssetDescriptorStorage() = {};
++GetManagedRenderPipelineEnvironmentGenerationStorage();
}
ManagedRenderPipelineAssetDescriptor GetManagedRenderPipelineAssetDescriptor() {