Align SRP selection with asset refs

This commit is contained in:
2026-04-27 17:09:31 +08:00
parent c3f62c1fae
commit 2a7f6d0b60
9 changed files with 255 additions and 10 deletions

View File

@@ -55,6 +55,15 @@ CreateBuiltinForwardPipelineRendererAssetForTest() {
return std::make_shared<Pipelines::BuiltinForwardPipelineAsset>();
}
XCEngine::Resources::AssetRef MakeRenderPipelineAssetRefForTest() {
XCEngine::Resources::AssetRef assetRef = {};
assetRef.assetGuid = XCEngine::Resources::AssetGUID(11u, 29u);
assetRef.localID = XCEngine::Resources::kMainAssetLocalID;
assetRef.resourceType =
XCEngine::Resources::ResourceType::RenderPipelineAsset;
return assetRef;
}
class ScopedPipelineRendererAssetFactoryRegistration final {
public:
ScopedPipelineRendererAssetFactoryRegistration(
@@ -4761,6 +4770,41 @@ TEST(ManagedScriptableRenderPipelineAsset_Test, CreatesHostWithStageRecorderFrom
Pipelines::ClearManagedRenderPipelineBridge();
}
TEST(
ManagedScriptableRenderPipelineAsset_Test,
PassesConfiguredAssetRefToManagedBridgeAsRuntimeCacheIdentity) {
Pipelines::ClearManagedRenderPipelineBridge();
Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = {
"GameScripts",
"Gameplay",
"ManagedRenderPipelineProbeAsset"
};
const XCEngine::Resources::AssetRef assetRef =
MakeRenderPipelineAssetRefForTest();
descriptor.assetRef = assetRef;
auto bridgeState = std::make_shared<MockManagedRenderPipelineBridgeState>();
Pipelines::SetManagedRenderPipelineBridge(
std::make_shared<MockManagedRenderPipelineBridge>(bridgeState));
Pipelines::ManagedScriptableRenderPipelineAsset asset(descriptor);
std::unique_ptr<RenderPipeline> pipeline = asset.CreatePipeline();
ASSERT_NE(pipeline, nullptr);
ASSERT_TRUE(bridgeState->lastDescriptor.assetRef.IsValid());
EXPECT_EQ(
bridgeState->lastDescriptor.assetRef.assetGuid,
assetRef.assetGuid);
EXPECT_EQ(
bridgeState->lastDescriptor.assetRef.localID,
assetRef.localID);
EXPECT_EQ(
bridgeState->lastDescriptor.assetRef.resourceType,
assetRef.resourceType);
Pipelines::ClearManagedRenderPipelineBridge();
}
TEST(
ManagedScriptableRenderPipelineAsset_Test,
UsesRuntimeProvidedPipelineRendererAssetForHostComposition) {