rendering: add alpha cutout integration coverage

This commit is contained in:
2026-04-06 23:09:45 +08:00
parent 620717f8b4
commit 83f316a91f
6 changed files with 506580 additions and 10 deletions

View File

@@ -551,11 +551,16 @@ TEST(ShaderLoader, LoadLegacyBackendSplitShaderAuthoringExpandsKeywordVariantsPe
ASSERT_NE(keywordOpenGLFragment, nullptr);
EXPECT_EQ(keywordOpenGLFragment->entryPoint, "main");
EXPECT_EQ(keywordOpenGLFragment->profile, "fs_4_30");
const std::string keywordOpenGLSource = keywordOpenGLFragment->sourceCode.CStr();
EXPECT_NE(
std::string(keywordOpenGLFragment->sourceCode.CStr()).find("#define XC_ALPHA_TEST 1"),
keywordOpenGLSource.find("#define XC_ALPHA_TEST 1"),
std::string::npos);
EXPECT_NE(keywordOpenGLSource.find("#version 430"), std::string::npos);
EXPECT_LT(
keywordOpenGLSource.find("#version 430"),
keywordOpenGLSource.find("#define XC_ALPHA_TEST 1"));
EXPECT_NE(
std::string(keywordOpenGLFragment->sourceCode.CStr()).find("LEGACY_KEYWORD_GL_PS"),
keywordOpenGLSource.find("LEGACY_KEYWORD_GL_PS"),
std::string::npos);
delete shader;
@@ -1464,6 +1469,33 @@ TEST(ShaderLoader, LoadBuiltinForwardLitShaderBuildsBackendVariants) {
std::string(alphaShadowD3D12Fragment->sourceCode.CStr()).find("gAlphaCutoffParams"),
std::string::npos);
const ShaderStageVariant* alphaShadowOpenGLFragment = shader->FindVariant(
"ForwardLit",
ShaderType::Fragment,
ShaderBackend::OpenGL,
alphaShadowKeywords);
ASSERT_NE(alphaShadowOpenGLFragment, nullptr);
const std::string alphaShadowOpenGLSource = alphaShadowOpenGLFragment->sourceCode.CStr();
EXPECT_NE(alphaShadowOpenGLSource.find("#version 430"), std::string::npos);
EXPECT_NE(alphaShadowOpenGLSource.find("#define XC_ALPHA_TEST 1"), std::string::npos);
EXPECT_LT(
alphaShadowOpenGLSource.find("#version 430"),
alphaShadowOpenGLSource.find("#define XC_ALPHA_TEST 1"));
EXPECT_NE(alphaShadowOpenGLSource.find("discard;"), std::string::npos);
const ShaderStageVariant* alphaShadowVulkanFragment = shader->FindVariant(
"ForwardLit",
ShaderType::Fragment,
ShaderBackend::Vulkan,
alphaShadowKeywords);
ASSERT_NE(alphaShadowVulkanFragment, nullptr);
const std::string alphaShadowVulkanSource = alphaShadowVulkanFragment->sourceCode.CStr();
EXPECT_NE(alphaShadowVulkanSource.find("#version 450"), std::string::npos);
EXPECT_NE(alphaShadowVulkanSource.find("#define XC_ALPHA_TEST 1"), std::string::npos);
EXPECT_LT(
alphaShadowVulkanSource.find("#version 450"),
alphaShadowVulkanSource.find("#define XC_ALPHA_TEST 1"));
const ShaderStageVariant* openglFragment = shader->FindVariant(
"ForwardLit",
ShaderType::Fragment,
@@ -1690,6 +1722,20 @@ TEST(ShaderLoader, LoadBuiltinDepthOnlyShaderBuildsBackendVariants) {
std::string(alphaD3D12Fragment->sourceCode.CStr()).find("gAlphaCutoffParams"),
std::string::npos);
const ShaderStageVariant* alphaOpenGLFragment = shader->FindVariant(
"DepthOnly",
ShaderType::Fragment,
ShaderBackend::OpenGL,
alphaKeywords);
ASSERT_NE(alphaOpenGLFragment, nullptr);
const std::string alphaOpenGLSource = alphaOpenGLFragment->sourceCode.CStr();
EXPECT_NE(alphaOpenGLSource.find("#version 430"), std::string::npos);
EXPECT_NE(alphaOpenGLSource.find("#define XC_ALPHA_TEST 1"), std::string::npos);
EXPECT_LT(
alphaOpenGLSource.find("#version 430"),
alphaOpenGLSource.find("#define XC_ALPHA_TEST 1"));
EXPECT_NE(alphaOpenGLSource.find("discard;"), std::string::npos);
delete shader;
}
@@ -1783,6 +1829,20 @@ TEST(ShaderLoader, LoadBuiltinShadowCasterShaderBuildsBackendVariants) {
std::string(alphaD3D12Fragment->sourceCode.CStr()).find("gAlphaCutoffParams"),
std::string::npos);
const ShaderStageVariant* alphaOpenGLFragment = shader->FindVariant(
"ShadowCaster",
ShaderType::Fragment,
ShaderBackend::OpenGL,
alphaKeywords);
ASSERT_NE(alphaOpenGLFragment, nullptr);
const std::string alphaOpenGLSource = alphaOpenGLFragment->sourceCode.CStr();
EXPECT_NE(alphaOpenGLSource.find("#version 430"), std::string::npos);
EXPECT_NE(alphaOpenGLSource.find("#define XC_ALPHA_TEST 1"), std::string::npos);
EXPECT_LT(
alphaOpenGLSource.find("#version 430"),
alphaOpenGLSource.find("#define XC_ALPHA_TEST 1"));
EXPECT_NE(alphaOpenGLSource.find("discard;"), std::string::npos);
delete shader;
}