refactor: drive scene view outline from object id
This commit is contained in:
@@ -15,8 +15,6 @@ TEST(SceneViewportPostPassPlan_Test, ReturnsInvalidPlanWhenOverlayIsUnavailable)
|
||||
|
||||
EXPECT_FALSE(plan.valid);
|
||||
EXPECT_TRUE(plan.steps.empty());
|
||||
EXPECT_FALSE(plan.usesSelectionMaskSurface);
|
||||
EXPECT_FALSE(plan.usesSelectionMaskShaderView);
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsGridOnlyPlanWhenNothingIsSelected) {
|
||||
@@ -33,16 +31,13 @@ TEST(SceneViewportPostPassPlan_Test, BuildsGridOnlyPlanWhenNothingIsSelected) {
|
||||
SceneViewportPostPassStep::InfiniteGrid,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
EXPECT_FALSE(plan.usesSelectionMaskSurface);
|
||||
EXPECT_FALSE(plan.usesSelectionMaskShaderView);
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsSelectionOutlinePlanWhenSelectionResourcesExist) {
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsSelectionOutlinePlanWhenObjectIdShaderViewExists) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.hasSelectionMaskRenderTarget = true;
|
||||
input.hasSelectionMaskShaderView = true;
|
||||
input.hasObjectIdShaderView = true;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
@@ -50,22 +45,17 @@ TEST(SceneViewportPostPassPlan_Test, BuildsSelectionOutlinePlanWhenSelectionReso
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::SelectionMask,
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::InfiniteGrid,
|
||||
SceneViewportPostPassStep::SelectionOutline,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
EXPECT_TRUE(plan.usesSelectionMaskSurface);
|
||||
EXPECT_TRUE(plan.usesSelectionMaskShaderView);
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, SkipsSelectionSpecificPassesWhenMaskResourcesAreMissing) {
|
||||
TEST(SceneViewportPostPassPlan_Test, SkipsSelectionOutlineWhenObjectIdShaderViewIsMissing) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.hasSelectionMaskRenderTarget = true;
|
||||
input.hasSelectionMaskShaderView = false;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
@@ -77,11 +67,28 @@ TEST(SceneViewportPostPassPlan_Test, SkipsSelectionSpecificPassesWhenMaskResourc
|
||||
SceneViewportPostPassStep::InfiniteGrid,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
EXPECT_FALSE(plan.usesSelectionMaskSurface);
|
||||
EXPECT_FALSE(plan.usesSelectionMaskShaderView);
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsDebugMaskPlanWithoutSelectionMaskTarget) {
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsDebugMaskPlanFromObjectIdShaderView) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.debugSelectionMask = true;
|
||||
input.hasObjectIdShaderView = true;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::SelectionMaskDebug,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, DebugMaskPlanFallsBackWhenObjectIdShaderViewIsMissing) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
@@ -94,11 +101,8 @@ TEST(SceneViewportPostPassPlan_Test, BuildsDebugMaskPlanWithoutSelectionMaskTarg
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::SelectionMaskDebug,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
EXPECT_FALSE(plan.usesSelectionMaskSurface);
|
||||
EXPECT_FALSE(plan.usesSelectionMaskShaderView);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user