refactor: move scene view post passes into rendering
This commit is contained in:
@@ -6,6 +6,7 @@ set(RENDERING_UNIT_TEST_SOURCES
|
||||
test_render_pass.cpp
|
||||
test_builtin_forward_pipeline.cpp
|
||||
test_builtin_scene_view_post_pass_plan.cpp
|
||||
test_builtin_scene_view_post_pass_sequence_builder.cpp
|
||||
test_camera_scene_renderer.cpp
|
||||
test_scene_render_request_planner.cpp
|
||||
test_scene_render_request_utils.cpp
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <XCEngine/Rendering/Passes/BuiltinSceneViewPostPassSequenceBuilder.h>
|
||||
|
||||
namespace {
|
||||
|
||||
using XCEngine::Rendering::Passes::BuiltinSceneViewPostPassSequenceBuilder;
|
||||
using XCEngine::Rendering::Passes::BuiltinSceneViewPostPassSequenceInput;
|
||||
using XCEngine::Rendering::Passes::ObjectIdOutlineStyle;
|
||||
using XCEngine::Rendering::RenderPassSequence;
|
||||
|
||||
TEST(BuiltinSceneViewPostPassSequenceBuilder_Test, ReturnsInvalidSequenceWhenGridDataIsUnavailable) {
|
||||
BuiltinSceneViewPostPassSequenceBuilder builder;
|
||||
RenderPassSequence sequence;
|
||||
|
||||
const auto result = builder.Build({}, sequence);
|
||||
|
||||
EXPECT_FALSE(result.valid);
|
||||
EXPECT_FALSE(result.missingObjectIdTextureViewForSelection);
|
||||
EXPECT_EQ(sequence.GetPassCount(), 0u);
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassSequenceBuilder_Test, BuildsGridOnlySequenceWhenNothingIsSelected) {
|
||||
BuiltinSceneViewPostPassSequenceBuilder builder;
|
||||
RenderPassSequence sequence;
|
||||
BuiltinSceneViewPostPassSequenceInput input = {};
|
||||
input.gridPassData.valid = true;
|
||||
|
||||
const auto result = builder.Build(input, sequence);
|
||||
|
||||
EXPECT_TRUE(result.valid);
|
||||
EXPECT_FALSE(result.missingObjectIdTextureViewForSelection);
|
||||
EXPECT_EQ(sequence.GetPassCount(), 3u);
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassSequenceBuilder_Test, BuildsSelectionOutlineSequenceWhenObjectIdTextureViewExists) {
|
||||
BuiltinSceneViewPostPassSequenceBuilder builder;
|
||||
RenderPassSequence sequence;
|
||||
BuiltinSceneViewPostPassSequenceInput input = {};
|
||||
input.gridPassData.valid = true;
|
||||
input.objectIdTextureView = reinterpret_cast<XCEngine::RHI::RHIResourceView*>(1);
|
||||
input.selectedObjectIds = { 7u, 11u };
|
||||
|
||||
const auto result = builder.Build(input, sequence);
|
||||
|
||||
EXPECT_TRUE(result.valid);
|
||||
EXPECT_FALSE(result.missingObjectIdTextureViewForSelection);
|
||||
EXPECT_EQ(sequence.GetPassCount(), 4u);
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassSequenceBuilder_Test, ReportsMissingObjectIdTextureViewAndFallsBackToGridOnlySequence) {
|
||||
BuiltinSceneViewPostPassSequenceBuilder builder;
|
||||
RenderPassSequence sequence;
|
||||
BuiltinSceneViewPostPassSequenceInput input = {};
|
||||
input.gridPassData.valid = true;
|
||||
input.selectedObjectIds = { 42u };
|
||||
|
||||
const auto result = builder.Build(input, sequence);
|
||||
|
||||
EXPECT_TRUE(result.valid);
|
||||
EXPECT_TRUE(result.missingObjectIdTextureViewForSelection);
|
||||
EXPECT_EQ(sequence.GetPassCount(), 3u);
|
||||
}
|
||||
|
||||
TEST(BuiltinSceneViewPostPassSequenceBuilder_Test, BuildsDebugMaskSequenceWhenRequested) {
|
||||
BuiltinSceneViewPostPassSequenceBuilder builder;
|
||||
RenderPassSequence sequence;
|
||||
BuiltinSceneViewPostPassSequenceInput input = {};
|
||||
input.gridPassData.valid = true;
|
||||
input.objectIdTextureView = reinterpret_cast<XCEngine::RHI::RHIResourceView*>(1);
|
||||
input.selectedObjectIds = { 5u };
|
||||
input.outlineStyle = ObjectIdOutlineStyle{};
|
||||
input.outlineStyle.debugSelectionMask = true;
|
||||
|
||||
const auto result = builder.Build(input, sequence);
|
||||
|
||||
EXPECT_TRUE(result.valid);
|
||||
EXPECT_FALSE(result.missingObjectIdTextureViewForSelection);
|
||||
EXPECT_EQ(sequence.GetPassCount(), 3u);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user