#include #include #include #include #include using namespace XCEngine::Rendering::Pipelines; using namespace XCEngine::Rendering::Passes; using namespace XCEngine::Resources; using namespace XCEngine::RHI; TEST(BuiltinForwardPipeline_Test, UsesFloat3PositionInputLayoutForStaticMeshVertices) { const InputLayoutDesc inputLayout = BuiltinForwardPipeline::BuildInputLayout(); ASSERT_EQ(inputLayout.elements.size(), 3u); const InputElementDesc& position = inputLayout.elements[0]; EXPECT_EQ(position.semanticName, "POSITION"); EXPECT_EQ(position.semanticIndex, 0u); EXPECT_EQ(position.format, static_cast(Format::R32G32B32_Float)); EXPECT_EQ(position.inputSlot, 0u); EXPECT_EQ(position.alignedByteOffset, 0u); const InputElementDesc& normal = inputLayout.elements[1]; EXPECT_EQ(normal.semanticName, "NORMAL"); EXPECT_EQ(normal.semanticIndex, 0u); EXPECT_EQ(normal.format, static_cast(Format::R32G32B32_Float)); EXPECT_EQ(normal.inputSlot, 0u); EXPECT_EQ(normal.alignedByteOffset, static_cast(offsetof(StaticMeshVertex, normal))); const InputElementDesc& texcoord = inputLayout.elements[2]; EXPECT_EQ(texcoord.semanticName, "TEXCOORD"); EXPECT_EQ(texcoord.semanticIndex, 0u); EXPECT_EQ(texcoord.format, static_cast(Format::R32G32_Float)); EXPECT_EQ(texcoord.inputSlot, 0u); EXPECT_EQ(texcoord.alignedByteOffset, static_cast(offsetof(StaticMeshVertex, uv0))); } TEST(BuiltinObjectIdPass_Test, UsesFloat3PositionInputLayoutForStaticMeshVertices) { const InputLayoutDesc inputLayout = BuiltinObjectIdPass::BuildInputLayout(); ASSERT_EQ(inputLayout.elements.size(), 1u); const InputElementDesc& position = inputLayout.elements[0]; EXPECT_EQ(position.semanticName, "POSITION"); EXPECT_EQ(position.semanticIndex, 0u); EXPECT_EQ(position.format, static_cast(Format::R32G32B32_Float)); EXPECT_EQ(position.inputSlot, 0u); EXPECT_EQ(position.alignedByteOffset, static_cast(offsetof(StaticMeshVertex, position))); }