Add Nahida model import and preview pipeline

This commit is contained in:
2026-04-11 20:16:49 +08:00
parent 8f71f99de4
commit 030230eb1f
87 changed files with 7245 additions and 117 deletions

View File

@@ -135,7 +135,7 @@ private:
TEST(BuiltinForwardPipeline_Test, UsesFloat3PositionInputLayoutForStaticMeshVertices) {
const InputLayoutDesc inputLayout = BuiltinForwardPipeline::BuildInputLayout();
ASSERT_EQ(inputLayout.elements.size(), 5u);
ASSERT_EQ(inputLayout.elements.size(), 7u);
const InputElementDesc& position = inputLayout.elements[0];
EXPECT_EQ(position.semanticName, "POSITION");
@@ -158,19 +158,33 @@ TEST(BuiltinForwardPipeline_Test, UsesFloat3PositionInputLayoutForStaticMeshVert
EXPECT_EQ(texcoord.inputSlot, 0u);
EXPECT_EQ(texcoord.alignedByteOffset, static_cast<uint32_t>(offsetof(StaticMeshVertex, uv0)));
const InputElementDesc& tangent = inputLayout.elements[3];
const InputElementDesc& backTexcoord = inputLayout.elements[3];
EXPECT_EQ(backTexcoord.semanticName, "TEXCOORD");
EXPECT_EQ(backTexcoord.semanticIndex, 1u);
EXPECT_EQ(backTexcoord.format, static_cast<uint32_t>(Format::R32G32_Float));
EXPECT_EQ(backTexcoord.inputSlot, 0u);
EXPECT_EQ(backTexcoord.alignedByteOffset, static_cast<uint32_t>(offsetof(StaticMeshVertex, uv1)));
const InputElementDesc& tangent = inputLayout.elements[4];
EXPECT_EQ(tangent.semanticName, "TEXCOORD");
EXPECT_EQ(tangent.semanticIndex, 1u);
EXPECT_EQ(tangent.semanticIndex, 2u);
EXPECT_EQ(tangent.format, static_cast<uint32_t>(Format::R32G32B32_Float));
EXPECT_EQ(tangent.inputSlot, 0u);
EXPECT_EQ(tangent.alignedByteOffset, static_cast<uint32_t>(offsetof(StaticMeshVertex, tangent)));
const InputElementDesc& bitangent = inputLayout.elements[4];
const InputElementDesc& bitangent = inputLayout.elements[5];
EXPECT_EQ(bitangent.semanticName, "TEXCOORD");
EXPECT_EQ(bitangent.semanticIndex, 2u);
EXPECT_EQ(bitangent.semanticIndex, 3u);
EXPECT_EQ(bitangent.format, static_cast<uint32_t>(Format::R32G32B32_Float));
EXPECT_EQ(bitangent.inputSlot, 0u);
EXPECT_EQ(bitangent.alignedByteOffset, static_cast<uint32_t>(offsetof(StaticMeshVertex, bitangent)));
const InputElementDesc& color = inputLayout.elements[6];
EXPECT_EQ(color.semanticName, "COLOR");
EXPECT_EQ(color.semanticIndex, 0u);
EXPECT_EQ(color.format, static_cast<uint32_t>(Format::R32G32B32A32_Float));
EXPECT_EQ(color.inputSlot, 0u);
EXPECT_EQ(color.alignedByteOffset, static_cast<uint32_t>(offsetof(StaticMeshVertex, color)));
}
TEST(RenderSurfacePipelineUtils_Test, ResolvesContiguousSurfaceAttachmentFormatsIntoPipelineDesc) {