Fix global uniforms parsed as instance uniform

This commit is contained in:
Lily Garcia 2022-11-17 17:18:20 -05:00
parent 966785751f
commit 0683bc3783

View File

@ -8190,25 +8190,27 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
}; };
[[fallthrough]]; [[fallthrough]];
case TK_INSTANCE: { case TK_INSTANCE: {
if (tk.type == TK_INSTANCE) {
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
keyword_completion_context = CF_UNIFORM_KEYWORD; keyword_completion_context = CF_UNIFORM_KEYWORD;
if (_lookup_next(next)) { if (_lookup_next(next)) {
if (next.type == TK_UNIFORM) { if (next.type == TK_UNIFORM) {
keyword_completion_context ^= CF_UNIFORM_KEYWORD; keyword_completion_context ^= CF_UNIFORM_KEYWORD;
}
} }
}
#endif // DEBUG_ENABLED #endif // DEBUG_ENABLED
if (String(shader_type_identifier) != "spatial") { if (String(shader_type_identifier) != "spatial") {
_set_error(vformat(RTR("Uniform instances are not yet implemented for '%s' shaders."), shader_type_identifier)); _set_error(vformat(RTR("Uniform instances are not yet implemented for '%s' shaders."), shader_type_identifier));
return ERR_PARSE_ERROR;
}
if (uniform_scope == ShaderNode::Uniform::SCOPE_LOCAL) {
tk = _get_token();
if (tk.type != TK_UNIFORM) {
_set_expected_after_error("uniform", "instance");
return ERR_PARSE_ERROR; return ERR_PARSE_ERROR;
} }
uniform_scope = ShaderNode::Uniform::SCOPE_INSTANCE; if (uniform_scope == ShaderNode::Uniform::SCOPE_LOCAL) {
tk = _get_token();
if (tk.type != TK_UNIFORM) {
_set_expected_after_error("uniform", "instance");
return ERR_PARSE_ERROR;
}
uniform_scope = ShaderNode::Uniform::SCOPE_INSTANCE;
}
} }
}; };
[[fallthrough]]; [[fallthrough]];