refactor(srp): remove managed frame planning hook

- derive fullscreen stage planning from pipeline render-graph support
- trim planning-only APIs from the managed SRP bridge and public surface
- update probes and tests to lock the slimmer SRP API boundary
This commit is contained in:
2026-04-19 13:47:20 +08:00
parent 08e2b38df2
commit 537d7d99fc
19 changed files with 179 additions and 517 deletions

View File

@@ -1163,6 +1163,9 @@ TEST_F(
bool hasPublicContextStageColorData = false;
bool hasPublicCameraRequestContextHasDirectionalShadow = false;
bool hasPublicCameraRequestContextClearDirectionalShadow = false;
bool hasPublicPipelineAssetConfigureCameraFramePlan = false;
bool hasPlanningContextType = false;
bool hasRendererFeatureConfigureCameraFramePlan = false;
bool hasRendererRecordingContextType = false;
bool hasRendererCameraRequestContextType = false;
@@ -1214,6 +1217,18 @@ TEST_F(
selectionScript,
"HasPublicCameraRequestContextClearDirectionalShadow",
hasPublicCameraRequestContextClearDirectionalShadow));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasPublicPipelineAssetConfigureCameraFramePlan",
hasPublicPipelineAssetConfigureCameraFramePlan));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasPlanningContextType",
hasPlanningContextType));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRendererFeatureConfigureCameraFramePlan",
hasRendererFeatureConfigureCameraFramePlan));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRendererRecordingContextType",
@@ -1235,6 +1250,9 @@ TEST_F(
EXPECT_FALSE(hasPublicContextStageColorData);
EXPECT_TRUE(hasPublicCameraRequestContextHasDirectionalShadow);
EXPECT_TRUE(hasPublicCameraRequestContextClearDirectionalShadow);
EXPECT_FALSE(hasPublicPipelineAssetConfigureCameraFramePlan);
EXPECT_FALSE(hasPlanningContextType);
EXPECT_FALSE(hasRendererFeatureConfigureCameraFramePlan);
EXPECT_FALSE(hasRendererRecordingContextType);
EXPECT_FALSE(hasRendererCameraRequestContextType);
}
@@ -2529,24 +2547,32 @@ TEST_F(
TEST_F(
MonoScriptRuntimeTest,
ManagedRenderPipelineAssetConfiguresFullscreenStagesThroughPlanningContext) {
ManagedRenderPipelineAssetPlansFullscreenStagesFromPipelineStageSupport) {
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = {
"GameScripts",
"Gameplay",
"ManagedPlannedFullscreenRenderPipelineProbeAsset"
};
XCEngine::Rendering::Pipelines::ManagedScriptableRenderPipelineAsset asset(
descriptor);
auto asset =
std::make_shared<
XCEngine::Rendering::Pipelines::ManagedScriptableRenderPipelineAsset>(
descriptor);
XCEngine::Rendering::CameraRenderRequest request = {};
request.context = {};
request.surface = XCEngine::Rendering::RenderSurface(64u, 64u);
request.surface.SetColorAttachment(
reinterpret_cast<XCEngine::RHI::RHIResourceView*>(1));
request.surface.SetDepthAttachment(
reinterpret_cast<XCEngine::RHI::RHIResourceView*>(2));
XCEngine::Rendering::CameraFramePlan plan =
XCEngine::Rendering::CameraFramePlan::FromRequest(request);
asset.ConfigureCameraFramePlan(plan);
XCEngine::Rendering::RenderPipelineHost host(asset);
const std::vector<XCEngine::Rendering::CameraFramePlan> plans =
host.BuildFramePlans({ request });
ASSERT_EQ(plans.size(), 1u);
const XCEngine::Rendering::CameraFramePlan& plan = plans[0];
EXPECT_TRUE(
plan.IsFullscreenStageRequested(