diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2020-03-19 18:36:10 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-19 18:36:10 +0300 |
commit | 6407b60fbf6c2cf308905273512b778b0b721da0 (patch) | |
tree | 2de9afbc967c9c9e4e510bae52393ddd93a91319 | |
parent | 500086587ab450681bdfa8d03a11dbda6cfcfbf4 (diff) | |
parent | dbffa2e0bb0969ebc9416cc813cd8f73ce7cce57 (diff) |
Merge pull request #37166 from Chaosus/shader_time
Makes shader 'TIME' available in custom functions by default
-rw-r--r-- | servers/visual/shader_language.cpp | 6 | ||||
-rw-r--r-- | servers/visual/shader_types.cpp | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index e73f8b8fc4..713b54e1ba 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -6284,6 +6284,12 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct builtin_types = p_functions[name].built_ins; } + if (p_functions.has("global")) { // Adds global variables: 'TIME' + for (Map<StringName, BuiltInInfo>::Element *E = p_functions["global"].built_ins.front(); E; E = E->next()) { + builtin_types.insert(E->key(), E->value()); + } + } + ShaderNode::Function function; function.callable = !p_functions.has(name); diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp index 5cd5f0b7bb..dd798f2d54 100644 --- a/servers/visual/shader_types.cpp +++ b/servers/visual/shader_types.cpp @@ -56,6 +56,8 @@ ShaderTypes::ShaderTypes() { /*************** SPATIAL ***********************/ + shader_modes[VS::SHADER_SPATIAL].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT); + shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC3; shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3; shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["TANGENT"] = ShaderLanguage::TYPE_VEC3; @@ -200,6 +202,8 @@ ShaderTypes::ShaderTypes() { /************ CANVAS ITEM **************************/ + shader_modes[VS::SHADER_CANVAS_ITEM].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT); + shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC2; shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2; shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4; @@ -267,6 +271,7 @@ ShaderTypes::ShaderTypes() { /************ PARTICLES **************************/ + shader_modes[VS::SHADER_PARTICLES].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT); shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4; shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["VELOCITY"] = ShaderLanguage::TYPE_VEC3; shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["MASS"] = ShaderLanguage::TYPE_FLOAT; |