summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-09-22 16:37:14 +0200
committerGitHub <noreply@github.com>2020-09-22 16:37:14 +0200
commit466a6d75e41001b5def1f153d6407c05729332d5 (patch)
tree55b96f259157f184995a6b8112073102754aa283
parent5824766a3cea92040dea6cc0cf59ee95ed86a68e (diff)
parent53740c69dfd7dcfcdac1fa97c46cd6861ad4d9e2 (diff)
Merge pull request #42215 from Chaosus/forbid_invalid_varyings
Forbids varying declaration in particles and sky shaders
-rw-r--r--servers/rendering/shader_language.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 28c41fb2dc..6c835fcadf 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -6099,6 +6099,14 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
case TK_UNIFORM:
case TK_VARYING: {
bool uniform = tk.type == TK_UNIFORM;
+
+ if (!uniform) {
+ if (shader_type_identifier == "particles" || shader_type_identifier == "sky") {
+ _set_error(vformat("Varyings cannot be used in '%s' shaders!", shader_type_identifier));
+ return ERR_PARSE_ERROR;
+ }
+ }
+
DataPrecision precision = PRECISION_DEFAULT;
DataInterpolation interpolation = INTERPOLATION_SMOOTH;
DataType type;