Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--intern/cycles/render/graph.cpp2
-rw-r--r--intern/cycles/render/osl.cpp2
-rw-r--r--intern/cycles/render/svm.cpp6
3 files changed, 7 insertions, 3 deletions
diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp
index 3e417d13d4d..e888cb37137 100644
--- a/intern/cycles/render/graph.cpp
+++ b/intern/cycles/render/graph.cpp
@@ -306,7 +306,7 @@ void ShaderGraph::find_dependencies(ShaderNodeSet& dependencies, ShaderInput *in
/* find all nodes that this input depends on directly and indirectly */
ShaderNode *node = (input->link)? input->link->parent: NULL;
- if(node) {
+ if(node != NULL && dependencies.find(node) == dependencies.end()) {
foreach(ShaderInput *in, node->inputs)
find_dependencies(dependencies, in);
diff --git a/intern/cycles/render/osl.cpp b/intern/cycles/render/osl.cpp
index 4306931e683..4933ed6c613 100644
--- a/intern/cycles/render/osl.cpp
+++ b/intern/cycles/render/osl.cpp
@@ -702,7 +702,7 @@ void OSLCompiler::find_dependencies(ShaderNodeSet& dependencies, ShaderInput *in
{
ShaderNode *node = (input->link)? input->link->parent: NULL;
- if(node) {
+ if(node != NULL && dependencies.find(node) == dependencies.end()) {
foreach(ShaderInput *in, node->inputs)
if(!node_skip_input(node, in))
find_dependencies(dependencies, in);
diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp
index fa22287d342..a4c7e7ef969 100644
--- a/intern/cycles/render/svm.cpp
+++ b/intern/cycles/render/svm.cpp
@@ -373,7 +373,11 @@ void SVMCompiler::find_dependencies(ShaderNodeSet& dependencies,
{
ShaderNode *node = (input->link)? input->link->parent: NULL;
- if(node && done.find(node) == done.end() && node != skip_node) {
+ if(node != NULL &&
+ done.find(node) == done.end() &&
+ node != skip_node &&
+ dependencies.find(node) == dependencies.end())
+ {
foreach(ShaderInput *in, node->inputs)
if(!node_skip_input(node, in))
find_dependencies(dependencies, done, in, skip_node);