Remove scene viewport postprocess API from engine
This commit is contained in:
@@ -13,7 +13,6 @@ using XCEngine::Editor::ApplySceneViewportRenderRequestSetup;
|
||||
using XCEngine::Editor::ApplySceneViewportRenderPlan;
|
||||
using XCEngine::Editor::ApplyViewportFailureStatus;
|
||||
using XCEngine::Editor::BuildGameViewportRenderFailurePolicy;
|
||||
using XCEngine::Editor::BuildSceneViewportBuiltinPostProcess;
|
||||
using XCEngine::Editor::BuildSceneViewportRenderPlan;
|
||||
using XCEngine::Editor::BuildSceneViewportRenderFailurePolicy;
|
||||
using XCEngine::Editor::BuildSceneViewportSelectionOutlineStyle;
|
||||
@@ -32,7 +31,6 @@ using XCEngine::RHI::RHIResourceView;
|
||||
using XCEngine::RHI::ResourceStates;
|
||||
using XCEngine::RHI::ResourceViewDimension;
|
||||
using XCEngine::RHI::ResourceViewType;
|
||||
using XCEngine::Rendering::BuiltinPostProcessRequest;
|
||||
using XCEngine::Rendering::RenderPass;
|
||||
using XCEngine::Rendering::RenderPassContext;
|
||||
using XCEngine::Rendering::RenderPassSequence;
|
||||
@@ -163,56 +161,28 @@ TEST(ViewportRenderFlowUtilsTest, ApplyViewportFailureStatusRespectsSetIfEmptyBe
|
||||
EXPECT_EQ(statusText, "No active scene");
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportBuiltinPostProcessReturnsEmptyRequestWhenOverlayIsInvalid) {
|
||||
const auto result = BuildSceneViewportBuiltinPostProcess({}, {}, true, false);
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportGridPassDataCopiesSceneCameraState) {
|
||||
const SceneViewportOverlayData overlay = CreateValidOverlay();
|
||||
const auto gridPassData = XCEngine::Editor::BuildSceneViewportGridPassData(overlay);
|
||||
|
||||
EXPECT_FALSE(result.request.IsRequested());
|
||||
EXPECT_EQ(result.warningStatusText, nullptr);
|
||||
EXPECT_TRUE(gridPassData.valid);
|
||||
EXPECT_FLOAT_EQ(gridPassData.cameraPosition.x, overlay.cameraPosition.x);
|
||||
EXPECT_FLOAT_EQ(gridPassData.cameraPosition.y, overlay.cameraPosition.y);
|
||||
EXPECT_FLOAT_EQ(gridPassData.cameraPosition.z, overlay.cameraPosition.z);
|
||||
EXPECT_FLOAT_EQ(gridPassData.verticalFovDegrees, overlay.verticalFovDegrees);
|
||||
EXPECT_FLOAT_EQ(gridPassData.orbitDistance, overlay.orbitDistance);
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportBuiltinPostProcessConfiguresGridAndOutlineDefaults) {
|
||||
const auto result = BuildSceneViewportBuiltinPostProcess(
|
||||
CreateValidOverlay(),
|
||||
{ 7u, 11u },
|
||||
true,
|
||||
false);
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportSelectionOutlineStyleAppliesSceneDefaults) {
|
||||
const auto style = BuildSceneViewportSelectionOutlineStyle(false);
|
||||
const auto debugStyle = BuildSceneViewportSelectionOutlineStyle(true);
|
||||
|
||||
EXPECT_TRUE(result.request.IsRequested());
|
||||
EXPECT_TRUE(result.request.gridPassData.valid);
|
||||
EXPECT_EQ(result.request.selectedObjectIds.size(), 2u);
|
||||
EXPECT_EQ(result.request.selectedObjectIds[0], 7u);
|
||||
EXPECT_EQ(result.request.selectedObjectIds[1], 11u);
|
||||
EXPECT_FLOAT_EQ(result.request.outlineStyle.outlineColor.r, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.request.outlineStyle.outlineColor.g, 0.4f);
|
||||
EXPECT_FLOAT_EQ(result.request.outlineStyle.outlineColor.b, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.request.outlineStyle.outlineWidthPixels, 2.0f);
|
||||
EXPECT_FALSE(result.request.outlineStyle.debugSelectionMask);
|
||||
EXPECT_EQ(result.warningStatusText, nullptr);
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportBuiltinPostProcessReportsMissingObjectIdShaderViewForSelectionOutline) {
|
||||
const auto result = BuildSceneViewportBuiltinPostProcess(
|
||||
CreateValidOverlay(),
|
||||
{ 42u },
|
||||
false,
|
||||
false);
|
||||
|
||||
EXPECT_TRUE(result.request.IsRequested());
|
||||
EXPECT_TRUE(result.request.gridPassData.valid);
|
||||
EXPECT_EQ(result.request.selectedObjectIds.size(), 1u);
|
||||
EXPECT_STREQ(result.warningStatusText, "Scene object id shader view is unavailable");
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportBuiltinPostProcessDoesNotWarnWhenDebugMaskDisablesSelectionOutlineFallback) {
|
||||
const auto result = BuildSceneViewportBuiltinPostProcess(
|
||||
CreateValidOverlay(),
|
||||
{ 42u },
|
||||
false,
|
||||
true);
|
||||
|
||||
EXPECT_TRUE(result.request.IsRequested());
|
||||
EXPECT_TRUE(result.request.outlineStyle.debugSelectionMask);
|
||||
EXPECT_EQ(result.warningStatusText, nullptr);
|
||||
EXPECT_FLOAT_EQ(style.outlineColor.r, 1.0f);
|
||||
EXPECT_FLOAT_EQ(style.outlineColor.g, 0.4f);
|
||||
EXPECT_FLOAT_EQ(style.outlineColor.b, 0.0f);
|
||||
EXPECT_FLOAT_EQ(style.outlineWidthPixels, 2.0f);
|
||||
EXPECT_FALSE(style.debugSelectionMask);
|
||||
EXPECT_TRUE(debugStyle.debugSelectionMask);
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, ApplySceneRenderRequestSetupAttachesOptionalPassesAndObjectIdSurface) {
|
||||
@@ -231,26 +201,17 @@ TEST(ViewportRenderFlowUtilsTest, ApplySceneRenderRequestSetupAttachesOptionalPa
|
||||
RenderPassSequence postPasses;
|
||||
postPasses.AddPass(std::make_unique<NoopRenderPass>());
|
||||
|
||||
BuiltinPostProcessRequest builtinPostProcess = {};
|
||||
builtinPostProcess.gridPassData.valid = true;
|
||||
builtinPostProcess.selectedObjectIds = { 7u };
|
||||
|
||||
XCEngine::Rendering::CameraRenderRequest request = {};
|
||||
request.surface = RenderSurface(800, 600);
|
||||
request.surface.SetRenderArea(XCEngine::Math::RectInt(64, 32, 320, 240));
|
||||
|
||||
ApplySceneViewportRenderRequestSetup(
|
||||
targets,
|
||||
&builtinPostProcess,
|
||||
&postPasses,
|
||||
request);
|
||||
|
||||
EXPECT_EQ(request.postScenePasses, &postPasses);
|
||||
EXPECT_TRUE(request.objectId.IsRequested());
|
||||
EXPECT_TRUE(request.builtinPostProcess.IsRequested());
|
||||
EXPECT_EQ(request.builtinPostProcess.objectIdTextureView, &objectIdShaderView);
|
||||
ASSERT_EQ(request.builtinPostProcess.selectedObjectIds.size(), 1u);
|
||||
EXPECT_EQ(request.builtinPostProcess.selectedObjectIds[0], 7u);
|
||||
ASSERT_EQ(request.objectId.surface.GetColorAttachments().size(), 1u);
|
||||
EXPECT_EQ(request.objectId.surface.GetColorAttachments()[0], &objectIdView);
|
||||
EXPECT_EQ(request.objectId.surface.GetDepthAttachment(), &depthView);
|
||||
@@ -273,46 +234,13 @@ TEST(ViewportRenderFlowUtilsTest, ApplySceneRenderRequestSetupSkipsUnavailableOp
|
||||
XCEngine::Rendering::CameraRenderRequest request = {};
|
||||
request.postScenePasses = reinterpret_cast<RenderPassSequence*>(static_cast<uintptr_t>(0x1));
|
||||
request.objectId.surface = RenderSurface(1, 1);
|
||||
request.builtinPostProcess.gridPassData.valid = true;
|
||||
request.objectId.surface.SetColorAttachment(
|
||||
reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x2)));
|
||||
|
||||
ApplySceneViewportRenderRequestSetup(targets, nullptr, &postPasses, request);
|
||||
ApplySceneViewportRenderRequestSetup(targets, &postPasses, request);
|
||||
|
||||
EXPECT_EQ(request.postScenePasses, nullptr);
|
||||
EXPECT_FALSE(request.objectId.IsRequested());
|
||||
EXPECT_FALSE(request.builtinPostProcess.IsRequested());
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, ApplySceneRenderRequestSetupPreservesBuiltinGridFallbackWhenObjectIdShaderViewIsUnavailable) {
|
||||
DummyResourceView depthView(ResourceViewType::DepthStencil, Format::D24_UNorm_S8_UInt);
|
||||
DummyResourceView objectIdView(ResourceViewType::RenderTarget);
|
||||
|
||||
ViewportRenderTargets targets = {};
|
||||
targets.width = 800;
|
||||
targets.height = 600;
|
||||
targets.depthView = &depthView;
|
||||
targets.objectIdView = &objectIdView;
|
||||
|
||||
const auto builtinPostProcess = BuildSceneViewportBuiltinPostProcess(
|
||||
CreateValidOverlay(),
|
||||
{ 99u },
|
||||
false,
|
||||
false);
|
||||
|
||||
XCEngine::Rendering::CameraRenderRequest request = {};
|
||||
request.surface = RenderSurface(800, 600);
|
||||
|
||||
ApplySceneViewportRenderRequestSetup(
|
||||
targets,
|
||||
&builtinPostProcess.request,
|
||||
nullptr,
|
||||
request);
|
||||
|
||||
EXPECT_TRUE(request.builtinPostProcess.IsRequested());
|
||||
EXPECT_EQ(request.builtinPostProcess.objectIdTextureView, nullptr);
|
||||
EXPECT_EQ(request.builtinPostProcess.selectedObjectIds.size(), 1u);
|
||||
EXPECT_TRUE(request.objectId.IsRequested());
|
||||
}
|
||||
|
||||
TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportRenderPlanCollectsPostSceneAndOverlayPasses) {
|
||||
@@ -365,7 +293,6 @@ TEST(ViewportRenderFlowUtilsTest, BuildSceneViewportRenderPlanCollectsPostSceneA
|
||||
},
|
||||
false);
|
||||
|
||||
EXPECT_FALSE(result.plan.builtinPostProcess.IsRequested());
|
||||
EXPECT_EQ(result.plan.postScenePasses.GetPassCount(), 2u);
|
||||
EXPECT_EQ(result.plan.overlayPasses.GetPassCount(), 1u);
|
||||
EXPECT_EQ(factoryCallCount, 1u);
|
||||
@@ -415,7 +342,6 @@ TEST(ViewportRenderFlowUtilsTest, ApplySceneViewportRenderPlanAttachesPlannedPas
|
||||
targets.objectIdShaderView = &objectIdShaderView;
|
||||
|
||||
SceneViewportRenderPlan plan = {};
|
||||
plan.builtinPostProcess.gridPassData.valid = true;
|
||||
plan.postScenePasses.AddPass(std::make_unique<NoopRenderPass>());
|
||||
plan.overlayPasses.AddPass(std::make_unique<NoopRenderPass>());
|
||||
plan.clearColorOverride = XCEngine::Math::Color(0.1f, 0.2f, 0.3f, 1.0f);
|
||||
@@ -429,7 +355,6 @@ TEST(ViewportRenderFlowUtilsTest, ApplySceneViewportRenderPlanAttachesPlannedPas
|
||||
EXPECT_EQ(request.postScenePasses, &plan.postScenePasses);
|
||||
EXPECT_EQ(request.overlayPasses, &plan.overlayPasses);
|
||||
EXPECT_TRUE(request.objectId.IsRequested());
|
||||
EXPECT_TRUE(request.builtinPostProcess.IsRequested());
|
||||
EXPECT_TRUE(request.hasClearColorOverride);
|
||||
EXPECT_FLOAT_EQ(request.clearColorOverride.r, 0.1f);
|
||||
EXPECT_FLOAT_EQ(request.clearColorOverride.g, 0.2f);
|
||||
@@ -450,7 +375,7 @@ TEST(ViewportRenderFlowUtilsTest, MarkSceneRenderSuccessMovesTargetsToShaderReso
|
||||
|
||||
XCEngine::Rendering::CameraRenderRequest request = {};
|
||||
request.surface = RenderSurface(640, 360);
|
||||
ApplySceneViewportRenderRequestSetup(targets, nullptr, nullptr, request);
|
||||
ApplySceneViewportRenderRequestSetup(targets, nullptr, request);
|
||||
|
||||
MarkSceneViewportRenderSuccess(targets, request);
|
||||
EXPECT_EQ(targets.colorState, ResourceStates::PixelShaderResource);
|
||||
|
||||
Reference in New Issue
Block a user