Align managed raster RenderGraph authoring with URP

This commit is contained in:
2026-04-26 23:32:09 +08:00
parent 09b1289338
commit 3b38d65ab8
13 changed files with 430 additions and 123 deletions

View File

@@ -1457,6 +1457,20 @@ TEST_F(
bool hasRendererRecordRenderer = false;
bool hasPublicRendererSupportsStageRenderGraph = false;
bool hasPublicRendererRecordStageRenderGraph = false;
bool hasRenderGraphRasterPassBuilderType = false;
bool hasRenderGraphRasterPassBuilderUseColorSource = false;
bool hasRenderGraphRasterPassBuilderUseTexture = false;
bool hasRenderGraphRasterPassBuilderSetColorAttachment = false;
bool hasRenderGraphRasterPassBuilderSetRenderFunc = false;
bool hasRenderGraphRasterPassBuilderSetColorScaleFullscreenExecution = false;
bool hasRenderGraphRasterPassBuilderSetShaderVectorFullscreenExecution = false;
bool hasRenderGraphRasterPassBuilderSetFinalColorFullscreenExecution = false;
bool hasRenderGraphRasterPassBuilderCommit = false;
bool hasRenderGraphRasterContextType = false;
bool hasRenderGraphRasterContextCommandBuffer = false;
bool hasRenderPassProtectedRecordColorScaleFullscreenPass = false;
bool hasRenderPassProtectedRecordShaderVectorFullscreenPass = false;
bool hasRenderPassProtectedRecordFinalColorFullscreenPass = false;
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
@@ -1606,6 +1620,62 @@ TEST_F(
selectionScript,
"HasPublicRendererRecordStageRenderGraph",
hasPublicRendererRecordStageRenderGraph));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderType",
hasRenderGraphRasterPassBuilderType));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderUseColorSource",
hasRenderGraphRasterPassBuilderUseColorSource));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderUseTexture",
hasRenderGraphRasterPassBuilderUseTexture));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderSetColorAttachment",
hasRenderGraphRasterPassBuilderSetColorAttachment));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderSetRenderFunc",
hasRenderGraphRasterPassBuilderSetRenderFunc));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderSetColorScaleFullscreenExecution",
hasRenderGraphRasterPassBuilderSetColorScaleFullscreenExecution));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderSetShaderVectorFullscreenExecution",
hasRenderGraphRasterPassBuilderSetShaderVectorFullscreenExecution));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderSetFinalColorFullscreenExecution",
hasRenderGraphRasterPassBuilderSetFinalColorFullscreenExecution));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterPassBuilderCommit",
hasRenderGraphRasterPassBuilderCommit));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterContextType",
hasRenderGraphRasterContextType));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderGraphRasterContextCommandBuffer",
hasRenderGraphRasterContextCommandBuffer));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderPassProtectedRecordColorScaleFullscreenPass",
hasRenderPassProtectedRecordColorScaleFullscreenPass));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderPassProtectedRecordShaderVectorFullscreenPass",
hasRenderPassProtectedRecordShaderVectorFullscreenPass));
EXPECT_TRUE(runtime->TryGetFieldValue(
selectionScript,
"HasRenderPassProtectedRecordFinalColorFullscreenPass",
hasRenderPassProtectedRecordFinalColorFullscreenPass));
EXPECT_FALSE(hasPublicContextRecordScene);
EXPECT_FALSE(hasPublicContextRecordScenePhase);
@@ -1644,6 +1714,20 @@ TEST_F(
EXPECT_TRUE(hasRendererRecordRenderer);
EXPECT_FALSE(hasPublicRendererSupportsStageRenderGraph);
EXPECT_FALSE(hasPublicRendererRecordStageRenderGraph);
EXPECT_TRUE(hasRenderGraphRasterPassBuilderType);
EXPECT_TRUE(hasRenderGraphRasterPassBuilderUseColorSource);
EXPECT_TRUE(hasRenderGraphRasterPassBuilderUseTexture);
EXPECT_TRUE(hasRenderGraphRasterPassBuilderSetColorAttachment);
EXPECT_TRUE(hasRenderGraphRasterPassBuilderSetRenderFunc);
EXPECT_FALSE(hasRenderGraphRasterPassBuilderSetColorScaleFullscreenExecution);
EXPECT_FALSE(hasRenderGraphRasterPassBuilderSetShaderVectorFullscreenExecution);
EXPECT_FALSE(hasRenderGraphRasterPassBuilderSetFinalColorFullscreenExecution);
EXPECT_TRUE(hasRenderGraphRasterPassBuilderCommit);
EXPECT_TRUE(hasRenderGraphRasterContextType);
EXPECT_TRUE(hasRenderGraphRasterContextCommandBuffer);
EXPECT_FALSE(hasRenderPassProtectedRecordColorScaleFullscreenPass);
EXPECT_FALSE(hasRenderPassProtectedRecordShaderVectorFullscreenPass);
EXPECT_FALSE(hasRenderPassProtectedRecordFinalColorFullscreenPass);
}
TEST_F(
@@ -4315,7 +4399,7 @@ TEST_F(
TEST_F(
MonoScriptRuntimeTest,
ManagedStageRecorderRecordsShaderVectorPostProcessThroughScriptableRenderContext) {
ManagedStageRecorderRecordsGenericPostProcessRasterPassesThroughRenderGraph) {
const auto bridge =
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineBridge();
ASSERT_NE(bridge, nullptr);
@@ -4400,17 +4484,17 @@ TEST_F(
ASSERT_EQ(compiledGraph.GetPassCount(), 2u);
EXPECT_STREQ(
compiledGraph.GetPassName(0).CStr(),
"ColorScale");
"ManagedPostProcess.First");
EXPECT_STREQ(
compiledGraph.GetPassName(1).CStr(),
"ColorScale");
"ManagedPostProcess.Second");
recorder->Shutdown();
}
TEST_F(
MonoScriptRuntimeTest,
ManagedStageRecorderRejectsRasterPassRecordingOutsideFullscreenStages) {
ManagedStageRecorderRecordsGenericRasterPassOutsideFullscreenStages) {
const auto bridge =
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineBridge();
ASSERT_NE(bridge, nullptr);
@@ -4480,7 +4564,7 @@ TEST_F(
&blackboard
};
EXPECT_FALSE(recorder->RecordStageRenderGraph(graphContext));
EXPECT_TRUE(recorder->RecordStageRenderGraph(graphContext));
XCEngine::Rendering::CompiledRenderGraph compiledGraph = {};
XCEngine::Containers::String errorMessage;
@@ -4490,7 +4574,10 @@ TEST_F(
compiledGraph,
&errorMessage))
<< errorMessage.CStr();
EXPECT_EQ(compiledGraph.GetPassCount(), 0u);
ASSERT_EQ(compiledGraph.GetPassCount(), 1u);
EXPECT_STREQ(
compiledGraph.GetPassName(0).CStr(),
"Managed.MainSceneGenericRasterPass");
recorder->Shutdown();
}