Add material render metadata and loader parsing

This commit is contained in:
2026-03-27 00:30:49 +08:00
parent c97510ed5b
commit f68da2e3f9
6 changed files with 586 additions and 26 deletions

View File

@@ -34,6 +34,76 @@ TEST(Material, SetGetShader) {
EXPECT_EQ(material.GetShader(), shader);
}
TEST(Material, DefaultRenderMetadata) {
Material material;
EXPECT_EQ(material.GetRenderQueue(), static_cast<XCEngine::Core::int32>(MaterialRenderQueue::Geometry));
EXPECT_TRUE(material.GetShaderPass().Empty());
EXPECT_EQ(material.GetTagCount(), 0u);
}
TEST(Material, SetGetRenderQueue) {
Material material;
material.SetRenderQueue(MaterialRenderQueue::Transparent);
EXPECT_EQ(material.GetRenderQueue(), static_cast<XCEngine::Core::int32>(MaterialRenderQueue::Transparent));
material.SetRenderQueue(2600);
EXPECT_EQ(material.GetRenderQueue(), 2600);
}
TEST(Material, SetGetShaderPass) {
Material material;
material.SetShaderPass("ForwardLit");
EXPECT_EQ(material.GetShaderPass(), "ForwardLit");
}
TEST(Material, SetGetTags) {
Material material;
material.SetTag("LightMode", "ForwardBase");
material.SetTag("RenderType", "Opaque");
EXPECT_TRUE(material.HasTag("LightMode"));
EXPECT_EQ(material.GetTag("LightMode"), "ForwardBase");
EXPECT_EQ(material.GetTag("RenderType"), "Opaque");
EXPECT_EQ(material.GetTagCount(), 2u);
}
TEST(Material, SetTagReplacesExistingValue) {
Material material;
material.SetTag("LightMode", "ForwardBase");
material.SetTag("LightMode", "ShadowCaster");
EXPECT_EQ(material.GetTagCount(), 1u);
EXPECT_EQ(material.GetTag("LightMode"), "ShadowCaster");
}
TEST(Material, RemoveTag) {
Material material;
material.SetTag("LightMode", "ForwardBase");
EXPECT_TRUE(material.HasTag("LightMode"));
material.RemoveTag("LightMode");
EXPECT_FALSE(material.HasTag("LightMode"));
EXPECT_TRUE(material.GetTag("LightMode").Empty());
}
TEST(Material, ClearTags) {
Material material;
material.SetTag("LightMode", "ForwardBase");
material.SetTag("RenderType", "Opaque");
ASSERT_EQ(material.GetTagCount(), 2u);
material.ClearTags();
EXPECT_EQ(material.GetTagCount(), 0u);
EXPECT_FALSE(material.HasTag("LightMode"));
EXPECT_FALSE(material.HasTag("RenderType"));
}
TEST(Material, SetGetFloat) {
Material material;