summaryrefslogtreecommitdiff
path: root/scene/resources
diff options
context:
space:
mode:
authorYuri Roubinsky <chaosus89@gmail.com>2021-07-17 22:33:19 +0300
committerYuri Roubinsky <chaosus89@gmail.com>2021-07-17 22:51:22 +0300
commitd63a284dff2c592a290eccd12cd5d121b6689b15 (patch)
tree66ca7bd4be9a1825a16c2186455801900f34ad6b /scene/resources
parent51a10feb9d1e1e2f5794badfad7a2e9c80a34697 (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.cpp14
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";
}