Lock URP runtime invalidation to asset and renderer data state

This commit is contained in:
2026-04-27 19:56:29 +08:00
parent f528295f88
commit 9428fec350
7 changed files with 467 additions and 1 deletions

View File

@@ -4303,6 +4303,66 @@ TEST_F(
EXPECT_EQ(observedInvalidateRendererCallCount, 1);
}
TEST_F(
MonoScriptRuntimeTest,
ManagedUniversalRenderPipelineAssetTracksRendererDataAndAssetSettingMutationsThroughRuntimeVersion) {
Scene* runtimeScene =
CreateScene("ManagedUniversalConfigInvalidationScene");
GameObject* selectionObject =
runtimeScene->CreateGameObject(
"ManagedUniversalConfigInvalidationSelection");
ScriptComponent* selectionScript =
AddScript(
selectionObject,
"Gameplay",
"ManagedUniversalConfigInvalidationRuntimeSelectionProbe");
ASSERT_NE(selectionScript, nullptr);
GameObject* observationObject =
runtimeScene->CreateGameObject(
"ManagedUniversalConfigInvalidationObservation");
ScriptComponent* observationScript =
AddScript(
observationObject,
"Gameplay",
"ManagedUniversalConfigInvalidationObservationProbe");
ASSERT_NE(observationScript, nullptr);
engine->OnRuntimeStart(runtimeScene);
engine->OnUpdate(0.016f);
EXPECT_TRUE(runtime->GetLastError().empty()) << runtime->GetLastError();
int observedRuntimeResourceVersionBeforeMutation = 0;
int observedRuntimeResourceVersionAfterRendererDataMutation = 0;
int observedRuntimeResourceVersionAfterAssetSettingsMutation = 0;
bool observedMutationRan = false;
EXPECT_TRUE(runtime->TryGetFieldValue(
observationScript,
"ObservedRuntimeResourceVersionBeforeMutation",
observedRuntimeResourceVersionBeforeMutation));
EXPECT_TRUE(runtime->TryGetFieldValue(
observationScript,
"ObservedRuntimeResourceVersionAfterRendererDataMutation",
observedRuntimeResourceVersionAfterRendererDataMutation));
EXPECT_TRUE(runtime->TryGetFieldValue(
observationScript,
"ObservedRuntimeResourceVersionAfterAssetSettingsMutation",
observedRuntimeResourceVersionAfterAssetSettingsMutation));
EXPECT_TRUE(runtime->TryGetFieldValue(
observationScript,
"ObservedMutationRan",
observedMutationRan));
EXPECT_TRUE(observedMutationRan);
EXPECT_GT(observedRuntimeResourceVersionBeforeMutation, 0);
EXPECT_EQ(
observedRuntimeResourceVersionAfterRendererDataMutation,
observedRuntimeResourceVersionBeforeMutation + 1);
EXPECT_EQ(
observedRuntimeResourceVersionAfterAssetSettingsMutation,
observedRuntimeResourceVersionAfterRendererDataMutation + 1);
}
TEST_F(
MonoScriptRuntimeTest,
ManagedRenderPipelineBridgeRebuildsPipelineAfterAssetInvalidation) {