diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2021-07-17 22:33:19 +0300 |
---|---|---|
committer | Yuri Roubinsky <chaosus89@gmail.com> | 2021-07-17 22:51:22 +0300 |
commit | d63a284dff2c592a290eccd12cd5d121b6689b15 (patch) | |
tree | 66ca7bd4be9a1825a16c2186455801900f34ad6b /scene/resources | |
parent | 51a10feb9d1e1e2f5794badfad7a2e9c80a34697 (diff) |
Prevent function gen in visual shader if no out connection is provided
Diffstat (limited to 'scene/resources')
-rw-r--r-- | scene/resources/visual_shader.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 36a1c206c8..b4a95f2592 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -1752,6 +1752,11 @@ void VisualShader::_update_shader() const { StringBuilder func_code; + bool is_empty_func = false; + if (shader_mode != Shader::MODE_PARTICLES && shader_mode != Shader::MODE_SKY) { + is_empty_func = true; + } + for (const List<Connection>::Element *E = graph[i].connections.front(); E; E = E->next()) { ConnectionKey from_key; from_key.node = E->get().from_node; @@ -1764,7 +1769,16 @@ void VisualShader::_update_shader() const { to_key.port = E->get().to_port; input_connections.insert(to_key, E); + + if (is_empty_func && to_key.node == NODE_ID_OUTPUT) { + is_empty_func = false; + } } + + if (is_empty_func) { + continue; + } + if (shader_mode != Shader::MODE_PARTICLES) { func_code += "\nvoid " + String(func_name[i]) + "() {\n"; } |