resources: support multi_compile_local shader keywords
This commit is contained in:
@@ -13,7 +13,8 @@ namespace Resources {
|
||||
enum class ShaderKeywordDeclarationType : Core::uint8 {
|
||||
MultiCompile = 0,
|
||||
ShaderFeature,
|
||||
ShaderFeatureLocal
|
||||
ShaderFeatureLocal,
|
||||
MultiCompileLocal = 3
|
||||
};
|
||||
|
||||
struct ShaderKeywordDeclaration {
|
||||
@@ -21,7 +22,8 @@ struct ShaderKeywordDeclaration {
|
||||
Containers::Array<Containers::String> options;
|
||||
|
||||
bool IsLocal() const {
|
||||
return type == ShaderKeywordDeclarationType::ShaderFeatureLocal;
|
||||
return type == ShaderKeywordDeclarationType::ShaderFeatureLocal ||
|
||||
type == ShaderKeywordDeclarationType::MultiCompileLocal;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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 = {};
|
||||
|
||||
Reference in New Issue
Block a user