Align URP scene drawing with RenderGraph renderer lists
This commit is contained in:
@@ -1277,7 +1277,104 @@ TEST_F(
|
||||
ASSERT_EQ(compiledGraph.GetPassCount(), 1u);
|
||||
EXPECT_STREQ(
|
||||
compiledGraph.GetPassName(0).CStr(),
|
||||
"ScriptCoreUniversalMainScene.Opaque");
|
||||
"Universal.DrawOpaqueObjects");
|
||||
|
||||
host->GetStageRecorder()->Shutdown();
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
MonoScriptRuntimeTest,
|
||||
DefaultCameraRendererUsesScriptCoreUniversalPipelineAssetDefaultMainScenePasses) {
|
||||
Scene* runtimeScene =
|
||||
CreateScene("ScriptCoreUniversalRenderPipelineDefaultMainSceneScene");
|
||||
GameObject* selectionObject =
|
||||
runtimeScene->CreateGameObject("ScriptCoreUniversalRenderPipelineSelection");
|
||||
ScriptComponent* selectionScript =
|
||||
AddScript(
|
||||
selectionObject,
|
||||
"Gameplay",
|
||||
"ScriptCoreUniversalRenderPipelineSelectionProbe");
|
||||
ASSERT_NE(selectionScript, nullptr);
|
||||
|
||||
engine->OnRuntimeStart(runtimeScene);
|
||||
engine->OnUpdate(0.016f);
|
||||
|
||||
XCEngine::Rendering::CameraRenderer renderer;
|
||||
auto* host =
|
||||
dynamic_cast<XCEngine::Rendering::Pipelines::ScriptableRenderPipelineHost*>(
|
||||
renderer.GetPipeline());
|
||||
ASSERT_NE(host, nullptr);
|
||||
ASSERT_NE(host->GetStageRecorder(), nullptr);
|
||||
EXPECT_TRUE(
|
||||
host->GetStageRecorder()->Initialize(
|
||||
XCEngine::Rendering::RenderContext{}));
|
||||
EXPECT_TRUE(
|
||||
host->SupportsStageRenderGraph(
|
||||
XCEngine::Rendering::CameraFrameStage::MainScene));
|
||||
|
||||
XCEngine::Rendering::RenderGraph graph;
|
||||
XCEngine::Rendering::RenderGraphBuilder graphBuilder(graph);
|
||||
XCEngine::Rendering::RenderGraphTextureDesc colorDesc = {};
|
||||
colorDesc.width = 64u;
|
||||
colorDesc.height = 64u;
|
||||
colorDesc.format =
|
||||
static_cast<XCEngine::Core::uint32>(
|
||||
XCEngine::RHI::Format::R8G8B8A8_UNorm);
|
||||
XCEngine::Rendering::RenderGraphTextureDesc depthDesc = colorDesc;
|
||||
depthDesc.format =
|
||||
static_cast<XCEngine::Core::uint32>(
|
||||
XCEngine::RHI::Format::D32_Float);
|
||||
const XCEngine::Rendering::RenderGraphTextureHandle colorTarget =
|
||||
graphBuilder.CreateTransientTexture(
|
||||
"ScriptCoreUniversalDefaultMainSceneColor",
|
||||
colorDesc);
|
||||
const XCEngine::Rendering::RenderGraphTextureHandle depthTarget =
|
||||
graphBuilder.CreateTransientTexture(
|
||||
"ScriptCoreUniversalDefaultMainSceneDepth",
|
||||
depthDesc);
|
||||
|
||||
const XCEngine::Rendering::RenderSceneData sceneData = {};
|
||||
const XCEngine::Rendering::RenderSurface surface(64u, 64u);
|
||||
bool executionSucceeded = true;
|
||||
XCEngine::Rendering::RenderGraphBlackboard blackboard = {};
|
||||
const XCEngine::Rendering::RenderPipelineStageRenderGraphContext graphContext = {
|
||||
graphBuilder,
|
||||
"ScriptCoreUniversalDefaultMainScene",
|
||||
XCEngine::Rendering::CameraFrameStage::MainScene,
|
||||
{},
|
||||
sceneData,
|
||||
surface,
|
||||
nullptr,
|
||||
nullptr,
|
||||
XCEngine::RHI::ResourceStates::Common,
|
||||
{},
|
||||
{ colorTarget },
|
||||
depthTarget,
|
||||
{},
|
||||
&executionSucceeded,
|
||||
&blackboard
|
||||
};
|
||||
|
||||
EXPECT_TRUE(host->GetStageRecorder()->RecordStageRenderGraph(graphContext));
|
||||
|
||||
XCEngine::Rendering::CompiledRenderGraph compiledGraph = {};
|
||||
XCEngine::Containers::String errorMessage;
|
||||
ASSERT_TRUE(
|
||||
XCEngine::Rendering::RenderGraphCompiler::Compile(
|
||||
graph,
|
||||
compiledGraph,
|
||||
&errorMessage))
|
||||
<< errorMessage.CStr();
|
||||
ASSERT_EQ(compiledGraph.GetPassCount(), 3u);
|
||||
EXPECT_STREQ(
|
||||
compiledGraph.GetPassName(0).CStr(),
|
||||
"Universal.DrawOpaqueObjects");
|
||||
EXPECT_STREQ(
|
||||
compiledGraph.GetPassName(1).CStr(),
|
||||
"Universal.DrawSkybox");
|
||||
EXPECT_STREQ(
|
||||
compiledGraph.GetPassName(2).CStr(),
|
||||
"Universal.DrawTransparentObjects");
|
||||
|
||||
host->GetStageRecorder()->Shutdown();
|
||||
}
|
||||
@@ -1618,6 +1715,7 @@ TEST_F(
|
||||
bool hasRenderGraphRasterPassBuilderType = false;
|
||||
bool hasRenderGraphRasterPassBuilderUseColorSource = false;
|
||||
bool hasRenderGraphRasterPassBuilderUseTexture = false;
|
||||
bool hasRenderGraphRasterPassBuilderUseRendererList = false;
|
||||
bool hasRenderGraphRasterPassBuilderSetColorAttachment = false;
|
||||
bool hasRenderGraphRasterPassBuilderSetRenderFunc = false;
|
||||
bool hasRenderGraphRasterPassBuilderSetColorScaleFullscreenExecution = false;
|
||||
@@ -1628,6 +1726,10 @@ TEST_F(
|
||||
bool hasRenderGraphRasterContextCommandBuffer = false;
|
||||
bool hasSceneRenderPhaseType = false;
|
||||
bool hasSceneRenderInjectionPointType = false;
|
||||
bool hasRenderGraphCreateRendererList = false;
|
||||
bool hasRendererListHandleType = false;
|
||||
bool hasCommandBufferDrawRendererList = false;
|
||||
bool hasCommandBufferDrawSkybox = false;
|
||||
bool hasPublicRenderingDataFramePlanId = false;
|
||||
bool hasRenderPassProtectedRecordColorScaleFullscreenPass = false;
|
||||
bool hasRenderPassProtectedRecordShaderVectorFullscreenPass = false;
|
||||
@@ -1817,6 +1919,10 @@ TEST_F(
|
||||
selectionScript,
|
||||
"HasRenderGraphRasterPassBuilderUseTexture",
|
||||
hasRenderGraphRasterPassBuilderUseTexture));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasRenderGraphRasterPassBuilderUseRendererList",
|
||||
hasRenderGraphRasterPassBuilderUseRendererList));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasRenderGraphRasterPassBuilderSetColorAttachment",
|
||||
@@ -1857,6 +1963,22 @@ TEST_F(
|
||||
selectionScript,
|
||||
"HasSceneRenderInjectionPointType",
|
||||
hasSceneRenderInjectionPointType));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasRenderGraphCreateRendererList",
|
||||
hasRenderGraphCreateRendererList));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasRendererListHandleType",
|
||||
hasRendererListHandleType));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasCommandBufferDrawRendererList",
|
||||
hasCommandBufferDrawRendererList));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasCommandBufferDrawSkybox",
|
||||
hasCommandBufferDrawSkybox));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasPublicRenderingDataFramePlanId",
|
||||
@@ -1920,6 +2042,7 @@ TEST_F(
|
||||
EXPECT_TRUE(hasRenderGraphRasterPassBuilderType);
|
||||
EXPECT_TRUE(hasRenderGraphRasterPassBuilderUseColorSource);
|
||||
EXPECT_TRUE(hasRenderGraphRasterPassBuilderUseTexture);
|
||||
EXPECT_TRUE(hasRenderGraphRasterPassBuilderUseRendererList);
|
||||
EXPECT_TRUE(hasRenderGraphRasterPassBuilderSetColorAttachment);
|
||||
EXPECT_TRUE(hasRenderGraphRasterPassBuilderSetRenderFunc);
|
||||
EXPECT_FALSE(hasRenderGraphRasterPassBuilderSetColorScaleFullscreenExecution);
|
||||
@@ -1930,6 +2053,10 @@ TEST_F(
|
||||
EXPECT_TRUE(hasRenderGraphRasterContextCommandBuffer);
|
||||
EXPECT_FALSE(hasSceneRenderPhaseType);
|
||||
EXPECT_FALSE(hasSceneRenderInjectionPointType);
|
||||
EXPECT_TRUE(hasRenderGraphCreateRendererList);
|
||||
EXPECT_TRUE(hasRendererListHandleType);
|
||||
EXPECT_TRUE(hasCommandBufferDrawRendererList);
|
||||
EXPECT_TRUE(hasCommandBufferDrawSkybox);
|
||||
EXPECT_TRUE(hasPublicRenderingDataFramePlanId);
|
||||
EXPECT_FALSE(hasRenderPassProtectedRecordColorScaleFullscreenPass);
|
||||
EXPECT_FALSE(hasRenderPassProtectedRecordShaderVectorFullscreenPass);
|
||||
|
||||
Reference in New Issue
Block a user