Fix scene selection outline mask path
This commit is contained in:
@@ -8,6 +8,7 @@ namespace {
|
||||
|
||||
using XCEngine::Editor::BuildViewportColorSurface;
|
||||
using XCEngine::Editor::BuildViewportObjectIdSurface;
|
||||
using XCEngine::Editor::BuildViewportSelectionMaskSurface;
|
||||
using XCEngine::Editor::BuildViewportRenderTargetsReuseQuery;
|
||||
using XCEngine::Editor::DestroyViewportRenderTargets;
|
||||
using XCEngine::Editor::EditorViewportKind;
|
||||
@@ -78,10 +79,16 @@ TEST(ViewportRenderTargetsTest, BuildReuseQueryReflectsCurrentResourcePresence)
|
||||
targets.colorView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x2));
|
||||
targets.depthTexture = reinterpret_cast<RHITexture*>(static_cast<uintptr_t>(0x3));
|
||||
targets.depthView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x4));
|
||||
targets.objectIdTexture = reinterpret_cast<RHITexture*>(static_cast<uintptr_t>(0x5));
|
||||
targets.objectIdView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x6));
|
||||
targets.objectIdShaderView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x7));
|
||||
targets.textureHandle.nativeHandle = 0x8;
|
||||
targets.depthShaderView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x5));
|
||||
targets.objectIdTexture = reinterpret_cast<RHITexture*>(static_cast<uintptr_t>(0x6));
|
||||
targets.objectIdDepthTexture = reinterpret_cast<RHITexture*>(static_cast<uintptr_t>(0x7));
|
||||
targets.objectIdDepthView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x8));
|
||||
targets.objectIdView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0x9));
|
||||
targets.objectIdShaderView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0xA));
|
||||
targets.selectionMaskTexture = reinterpret_cast<RHITexture*>(static_cast<uintptr_t>(0xB));
|
||||
targets.selectionMaskView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0xC));
|
||||
targets.selectionMaskShaderView = reinterpret_cast<RHIResourceView*>(static_cast<uintptr_t>(0xD));
|
||||
targets.textureHandle.nativeHandle = 0xE;
|
||||
targets.textureHandle.width = 1280;
|
||||
targets.textureHandle.height = 720;
|
||||
|
||||
@@ -94,25 +101,36 @@ TEST(ViewportRenderTargetsTest, BuildReuseQueryReflectsCurrentResourcePresence)
|
||||
EXPECT_TRUE(query.resources.hasColorView);
|
||||
EXPECT_TRUE(query.resources.hasDepthTexture);
|
||||
EXPECT_TRUE(query.resources.hasDepthView);
|
||||
EXPECT_TRUE(query.resources.hasDepthShaderView);
|
||||
EXPECT_TRUE(query.resources.hasObjectIdTexture);
|
||||
EXPECT_TRUE(query.resources.hasObjectIdDepthTexture);
|
||||
EXPECT_TRUE(query.resources.hasObjectIdDepthView);
|
||||
EXPECT_TRUE(query.resources.hasObjectIdView);
|
||||
EXPECT_TRUE(query.resources.hasObjectIdShaderView);
|
||||
EXPECT_TRUE(query.resources.hasSelectionMaskTexture);
|
||||
EXPECT_TRUE(query.resources.hasSelectionMaskView);
|
||||
EXPECT_TRUE(query.resources.hasSelectionMaskShaderView);
|
||||
EXPECT_TRUE(query.resources.hasTextureDescriptor);
|
||||
}
|
||||
|
||||
TEST(ViewportRenderTargetsTest, BuildSurfaceUsesTargetAttachmentsAndStates) {
|
||||
DummyResourceView colorView(ResourceViewType::RenderTarget);
|
||||
DummyResourceView depthView(ResourceViewType::DepthStencil, Format::D24_UNorm_S8_UInt);
|
||||
DummyResourceView objectIdDepthView(ResourceViewType::DepthStencil, Format::D24_UNorm_S8_UInt);
|
||||
DummyResourceView objectIdView(ResourceViewType::RenderTarget);
|
||||
DummyResourceView selectionMaskView(ResourceViewType::RenderTarget);
|
||||
|
||||
ViewportRenderTargets targets = {};
|
||||
targets.width = 800;
|
||||
targets.height = 600;
|
||||
targets.colorView = &colorView;
|
||||
targets.depthView = &depthView;
|
||||
targets.objectIdDepthView = &objectIdDepthView;
|
||||
targets.objectIdView = &objectIdView;
|
||||
targets.selectionMaskView = &selectionMaskView;
|
||||
targets.colorState = ResourceStates::Common;
|
||||
targets.objectIdState = ResourceStates::PixelShaderResource;
|
||||
targets.selectionMaskState = ResourceStates::PixelShaderResource;
|
||||
|
||||
const auto colorSurface = BuildViewportColorSurface(targets);
|
||||
ASSERT_EQ(colorSurface.GetColorAttachments().size(), 1u);
|
||||
@@ -123,8 +141,14 @@ TEST(ViewportRenderTargetsTest, BuildSurfaceUsesTargetAttachmentsAndStates) {
|
||||
const auto objectIdSurface = BuildViewportObjectIdSurface(targets);
|
||||
ASSERT_EQ(objectIdSurface.GetColorAttachments().size(), 1u);
|
||||
EXPECT_EQ(objectIdSurface.GetColorAttachments()[0], &objectIdView);
|
||||
EXPECT_EQ(objectIdSurface.GetDepthAttachment(), &depthView);
|
||||
EXPECT_EQ(objectIdSurface.GetDepthAttachment(), &objectIdDepthView);
|
||||
EXPECT_EQ(objectIdSurface.GetColorStateBefore(), ResourceStates::PixelShaderResource);
|
||||
|
||||
const auto selectionMaskSurface = BuildViewportSelectionMaskSurface(targets);
|
||||
ASSERT_EQ(selectionMaskSurface.GetColorAttachments().size(), 1u);
|
||||
EXPECT_EQ(selectionMaskSurface.GetColorAttachments()[0], &selectionMaskView);
|
||||
EXPECT_EQ(selectionMaskSurface.GetDepthAttachment(), &depthView);
|
||||
EXPECT_EQ(selectionMaskSurface.GetColorStateBefore(), ResourceStates::PixelShaderResource);
|
||||
}
|
||||
|
||||
TEST(ViewportRenderTargetsTest, DestroyViewportRenderTargetsShutsDownAndClearsState) {
|
||||
@@ -132,9 +156,15 @@ TEST(ViewportRenderTargetsTest, DestroyViewportRenderTargetsShutsDownAndClearsSt
|
||||
auto* colorView = new DummyResourceView(ResourceViewType::RenderTarget);
|
||||
auto* depthTexture = new DummyTexture(Format::D24_UNorm_S8_UInt);
|
||||
auto* depthView = new DummyResourceView(ResourceViewType::DepthStencil, Format::D24_UNorm_S8_UInt);
|
||||
auto* depthShaderView = new DummyResourceView(ResourceViewType::ShaderResource, Format::D24_UNorm_S8_UInt);
|
||||
auto* objectIdTexture = new DummyTexture();
|
||||
auto* objectIdDepthTexture = new DummyTexture(Format::D24_UNorm_S8_UInt);
|
||||
auto* objectIdDepthView = new DummyResourceView(ResourceViewType::DepthStencil, Format::D24_UNorm_S8_UInt);
|
||||
auto* objectIdView = new DummyResourceView(ResourceViewType::RenderTarget);
|
||||
auto* objectIdShaderView = new DummyResourceView(ResourceViewType::ShaderResource);
|
||||
auto* selectionMaskTexture = new DummyTexture();
|
||||
auto* selectionMaskView = new DummyResourceView(ResourceViewType::RenderTarget);
|
||||
auto* selectionMaskShaderView = new DummyResourceView(ResourceViewType::ShaderResource);
|
||||
|
||||
ViewportRenderTargets targets = {};
|
||||
targets.width = 640;
|
||||
@@ -143,9 +173,15 @@ TEST(ViewportRenderTargetsTest, DestroyViewportRenderTargetsShutsDownAndClearsSt
|
||||
targets.colorView = colorView;
|
||||
targets.depthTexture = depthTexture;
|
||||
targets.depthView = depthView;
|
||||
targets.depthShaderView = depthShaderView;
|
||||
targets.objectIdTexture = objectIdTexture;
|
||||
targets.objectIdDepthTexture = objectIdDepthTexture;
|
||||
targets.objectIdDepthView = objectIdDepthView;
|
||||
targets.objectIdView = objectIdView;
|
||||
targets.objectIdShaderView = objectIdShaderView;
|
||||
targets.selectionMaskTexture = selectionMaskTexture;
|
||||
targets.selectionMaskView = selectionMaskView;
|
||||
targets.selectionMaskShaderView = selectionMaskShaderView;
|
||||
targets.imguiCpuHandle.ptr = 123;
|
||||
targets.imguiGpuHandle.ptr = 456;
|
||||
targets.textureHandle.nativeHandle = 789;
|
||||
@@ -153,6 +189,7 @@ TEST(ViewportRenderTargetsTest, DestroyViewportRenderTargetsShutsDownAndClearsSt
|
||||
targets.textureHandle.height = 360;
|
||||
targets.colorState = ResourceStates::RenderTarget;
|
||||
targets.objectIdState = ResourceStates::PixelShaderResource;
|
||||
targets.selectionMaskState = ResourceStates::PixelShaderResource;
|
||||
targets.hasValidObjectIdFrame = true;
|
||||
|
||||
DestroyViewportRenderTargets(nullptr, targets);
|
||||
@@ -161,18 +198,30 @@ TEST(ViewportRenderTargetsTest, DestroyViewportRenderTargetsShutsDownAndClearsSt
|
||||
EXPECT_TRUE(colorView->shutdownCalled);
|
||||
EXPECT_TRUE(depthTexture->shutdownCalled);
|
||||
EXPECT_TRUE(depthView->shutdownCalled);
|
||||
EXPECT_TRUE(depthShaderView->shutdownCalled);
|
||||
EXPECT_TRUE(objectIdTexture->shutdownCalled);
|
||||
EXPECT_TRUE(objectIdDepthTexture->shutdownCalled);
|
||||
EXPECT_TRUE(objectIdDepthView->shutdownCalled);
|
||||
EXPECT_TRUE(objectIdView->shutdownCalled);
|
||||
EXPECT_TRUE(objectIdShaderView->shutdownCalled);
|
||||
EXPECT_TRUE(selectionMaskTexture->shutdownCalled);
|
||||
EXPECT_TRUE(selectionMaskView->shutdownCalled);
|
||||
EXPECT_TRUE(selectionMaskShaderView->shutdownCalled);
|
||||
EXPECT_EQ(targets.width, 0u);
|
||||
EXPECT_EQ(targets.height, 0u);
|
||||
EXPECT_EQ(targets.colorTexture, nullptr);
|
||||
EXPECT_EQ(targets.colorView, nullptr);
|
||||
EXPECT_EQ(targets.depthTexture, nullptr);
|
||||
EXPECT_EQ(targets.depthView, nullptr);
|
||||
EXPECT_EQ(targets.depthShaderView, nullptr);
|
||||
EXPECT_EQ(targets.objectIdTexture, nullptr);
|
||||
EXPECT_EQ(targets.objectIdDepthTexture, nullptr);
|
||||
EXPECT_EQ(targets.objectIdDepthView, nullptr);
|
||||
EXPECT_EQ(targets.objectIdView, nullptr);
|
||||
EXPECT_EQ(targets.objectIdShaderView, nullptr);
|
||||
EXPECT_EQ(targets.selectionMaskTexture, nullptr);
|
||||
EXPECT_EQ(targets.selectionMaskView, nullptr);
|
||||
EXPECT_EQ(targets.selectionMaskShaderView, nullptr);
|
||||
EXPECT_EQ(targets.imguiCpuHandle.ptr, 0u);
|
||||
EXPECT_EQ(targets.imguiGpuHandle.ptr, 0u);
|
||||
EXPECT_EQ(targets.textureHandle.nativeHandle, 0u);
|
||||
@@ -180,6 +229,7 @@ TEST(ViewportRenderTargetsTest, DestroyViewportRenderTargetsShutsDownAndClearsSt
|
||||
EXPECT_EQ(targets.textureHandle.height, 0u);
|
||||
EXPECT_EQ(targets.colorState, ResourceStates::Common);
|
||||
EXPECT_EQ(targets.objectIdState, ResourceStates::Common);
|
||||
EXPECT_EQ(targets.selectionMaskState, ResourceStates::Common);
|
||||
EXPECT_FALSE(targets.hasValidObjectIdFrame);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user