resources: support multi_compile_local shader keywords

This commit is contained in:
2026-04-06 20:38:32 +08:00
parent c318f34f07
commit eea38d57d1
3 changed files with 78 additions and 5 deletions

View File

@@ -928,6 +928,7 @@ bool IsUnityStyleAuthoringPragmaDirective(const std::string& line) {
pragmaTokens[1] == "fragment" ||
pragmaTokens[1] == "target" ||
pragmaTokens[1] == "multi_compile" ||
pragmaTokens[1] == "multi_compile_local" ||
pragmaTokens[1] == "shader_feature" ||
pragmaTokens[1] == "shader_feature_local" ||
pragmaTokens[1] == "backend";
@@ -1037,6 +1038,8 @@ bool TryParseShaderKeywordDeclarationPragma(
if (pragmaTokens[1] == "multi_compile") {
outDeclaration.type = ShaderKeywordDeclarationType::MultiCompile;
} else if (pragmaTokens[1] == "multi_compile_local") {
outDeclaration.type = ShaderKeywordDeclarationType::MultiCompileLocal;
} else if (pragmaTokens[1] == "shader_feature") {
outDeclaration.type = ShaderKeywordDeclarationType::ShaderFeature;
} else if (pragmaTokens[1] == "shader_feature_local") {
@@ -1550,6 +1553,7 @@ bool ParseLegacyBackendSplitShaderAuthoring(
}
if (pragmaTokens.size() >= 2u &&
(pragmaTokens[1] == "multi_compile" ||
pragmaTokens[1] == "multi_compile_local" ||
pragmaTokens[1] == "shader_feature" ||
pragmaTokens[1] == "shader_feature_local")) {
ShaderKeywordDeclaration declaration = {};
@@ -1842,6 +1846,7 @@ bool ParseUnityStyleSingleSourceShaderAuthoring(
}
if (pragmaTokens.size() >= 2u &&
(pragmaTokens[1] == "multi_compile" ||
pragmaTokens[1] == "multi_compile_local" ||
pragmaTokens[1] == "shader_feature" ||
pragmaTokens[1] == "shader_feature_local")) {
ShaderKeywordDeclaration declaration = {};