refactor: move scene view post-pass planning into renderer
This commit is contained in:
@@ -5,6 +5,7 @@ project(XCEngine_RenderingUnitTests)
|
||||
set(RENDERING_UNIT_TEST_SOURCES
|
||||
test_render_pass.cpp
|
||||
test_builtin_forward_pipeline.cpp
|
||||
test_builtin_scene_view_post_pass_plan.cpp
|
||||
test_camera_scene_renderer.cpp
|
||||
test_render_scene_extractor.cpp
|
||||
)
|
||||
|
||||
108
tests/Rendering/unit/test_builtin_scene_view_post_pass_plan.cpp
Normal file
108
tests/Rendering/unit/test_builtin_scene_view_post_pass_plan.cpp
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <XCEngine/Rendering/Passes/BuiltinSceneViewPostPassPlan.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace {
|
||||
|
||||
using XCEngine::Rendering::Passes::BuildBuiltinSceneViewPostPassPlan;
|
||||
using XCEngine::Rendering::Passes::BuiltinSceneViewPostPassPlanInput;
|
||||
using XCEngine::Rendering::Passes::BuiltinSceneViewPostPassStep;
|
||||
|
||||
TEST(BuiltinSceneViewPostPassPlan_Test, ReturnsInvalidPlanWhenOverlayIsUnavailable) {
|
||||
const auto plan = BuildBuiltinSceneViewPostPassPlan({});
|
||||
|
||||
EXPECT_FALSE(plan.valid);
|
||||
EXPECT_TRUE(plan.steps.empty());
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassPlan_Test, BuildsGridOnlyPlanWhenNothingIsSelected) {
|
||||
BuiltinSceneViewPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
|
||||
const auto plan = BuildBuiltinSceneViewPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<BuiltinSceneViewPostPassStep>{
|
||||
BuiltinSceneViewPostPassStep::ColorToRenderTarget,
|
||||
BuiltinSceneViewPostPassStep::InfiniteGrid,
|
||||
BuiltinSceneViewPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassPlan_Test, BuildsSelectionOutlinePlanWhenObjectIdShaderViewExists) {
|
||||
BuiltinSceneViewPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.hasObjectIdShaderView = true;
|
||||
|
||||
const auto plan = BuildBuiltinSceneViewPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<BuiltinSceneViewPostPassStep>{
|
||||
BuiltinSceneViewPostPassStep::ColorToRenderTarget,
|
||||
BuiltinSceneViewPostPassStep::InfiniteGrid,
|
||||
BuiltinSceneViewPostPassStep::SelectionOutline,
|
||||
BuiltinSceneViewPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassPlan_Test, SkipsSelectionOutlineWhenObjectIdShaderViewIsMissing) {
|
||||
BuiltinSceneViewPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
|
||||
const auto plan = BuildBuiltinSceneViewPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<BuiltinSceneViewPostPassStep>{
|
||||
BuiltinSceneViewPostPassStep::ColorToRenderTarget,
|
||||
BuiltinSceneViewPostPassStep::InfiniteGrid,
|
||||
BuiltinSceneViewPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassPlan_Test, BuildsDebugMaskPlanFromObjectIdShaderView) {
|
||||
BuiltinSceneViewPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.debugSelectionMask = true;
|
||||
input.hasObjectIdShaderView = true;
|
||||
|
||||
const auto plan = BuildBuiltinSceneViewPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<BuiltinSceneViewPostPassStep>{
|
||||
BuiltinSceneViewPostPassStep::ColorToRenderTarget,
|
||||
BuiltinSceneViewPostPassStep::SelectionMaskDebug,
|
||||
BuiltinSceneViewPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassPlan_Test, DebugMaskPlanFallsBackWhenObjectIdShaderViewIsMissing) {
|
||||
BuiltinSceneViewPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.debugSelectionMask = true;
|
||||
|
||||
const auto plan = BuildBuiltinSceneViewPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<BuiltinSceneViewPostPassStep>{
|
||||
BuiltinSceneViewPostPassStep::ColorToRenderTarget,
|
||||
BuiltinSceneViewPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -8,7 +8,6 @@ set(EDITOR_TEST_SOURCES
|
||||
test_scene_viewport_move_gizmo.cpp
|
||||
test_scene_viewport_rotate_gizmo.cpp
|
||||
test_scene_viewport_scale_gizmo.cpp
|
||||
test_scene_viewport_post_pass_plan.cpp
|
||||
test_scene_viewport_picker.cpp
|
||||
test_scene_viewport_overlay_renderer.cpp
|
||||
test_scene_viewport_selection_utils.cpp
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "Viewport/SceneViewportPostPassPlan.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace {
|
||||
|
||||
using XCEngine::Editor::BuildSceneViewportPostPassPlan;
|
||||
using XCEngine::Editor::SceneViewportPostPassPlanInput;
|
||||
using XCEngine::Editor::SceneViewportPostPassStep;
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, ReturnsInvalidPlanWhenOverlayIsUnavailable) {
|
||||
const auto plan = BuildSceneViewportPostPassPlan({});
|
||||
|
||||
EXPECT_FALSE(plan.valid);
|
||||
EXPECT_TRUE(plan.steps.empty());
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsGridOnlyPlanWhenNothingIsSelected) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::InfiniteGrid,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, BuildsSelectionOutlinePlanWhenObjectIdShaderViewExists) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
input.hasObjectIdShaderView = true;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::InfiniteGrid,
|
||||
SceneViewportPostPassStep::SelectionOutline,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
TEST(SceneViewportPostPassPlan_Test, SkipsSelectionOutlineWhenObjectIdShaderViewIsMissing) {
|
||||
SceneViewportPostPassPlanInput input = {};
|
||||
input.overlayValid = true;
|
||||
input.hasSelection = true;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::InfiniteGrid,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
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;
|
||||
input.debugSelectionMask = true;
|
||||
|
||||
const auto plan = BuildSceneViewportPostPassPlan(input);
|
||||
|
||||
ASSERT_TRUE(plan.valid);
|
||||
EXPECT_EQ(
|
||||
plan.steps,
|
||||
(std::vector<SceneViewportPostPassStep>{
|
||||
SceneViewportPostPassStep::ColorToRenderTarget,
|
||||
SceneViewportPostPassStep::ColorToShaderResource
|
||||
}));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user