diff options
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/render/graph.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp index 9896eaba89b..5b81a2ccb9e 100644 --- a/intern/cycles/render/graph.cpp +++ b/intern/cycles/render/graph.cpp @@ -727,10 +727,18 @@ void ShaderGraph::bump_from_displacement() /* connect bump output to normal input nodes that aren't set yet. actually * this will only set the normal input to the geometry node that we created * and connected to all other normal inputs already. */ - foreach(ShaderNode *node, nodes) - foreach(ShaderInput *input, node->inputs) + foreach(ShaderNode *node, nodes) { + /* Don't connect normal to the bump node we're coming from, + * otherwise it'll be a cycle in graph. + */ + if(node == bump) { + continue; + } + foreach(ShaderInput *input, node->inputs) { if(!input->link && input->default_value == ShaderInput::NORMAL) connect(set_normal->output("Normal"), input); + } + } /* for displacement bump, clear the normal input in case the above loop * connected the setnormal out to the bump normalin */ |