diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-12-11 16:33:24 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-12-11 16:34:52 +0300 |
commit | b45b082531ca8d4e2bd7b06616b27b21f42fe542 (patch) | |
tree | 949bc39a613e3f4d95b172bb62fcf80dd67f8797 /intern/cycles | |
parent | 765795aed7bfc738eb3c911ce5e5496fd0879a23 (diff) |
Cycles: Remove old nasty workaround
It used to be used for some sort of ignoring automatically
generated bump nodes. But nowadays it causes one of the shaders
in Classroom demo file to be compiled wrong.
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/render/svm.cpp | 32 | ||||
-rw-r--r-- | intern/cycles/render/svm.h | 2 |
2 files changed, 11 insertions, 23 deletions
diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp index fb32f1ba094..01fda0a9e01 100644 --- a/intern/cycles/render/svm.cpp +++ b/intern/cycles/render/svm.cpp @@ -411,31 +411,20 @@ uint SVMCompiler::attribute_standard(ustring name) return (std)? attribute(std): attribute(name); } -bool SVMCompiler::node_skip_input(ShaderNode * /*node*/, ShaderInput *input) -{ - /* nasty exception .. */ - if(current_type == SHADER_TYPE_DISPLACEMENT && input->link && input->link->parent->special_type == SHADER_SPECIAL_TYPE_BUMP) - return true; - - return false; -} - void SVMCompiler::find_dependencies(ShaderNodeSet& dependencies, const ShaderNodeSet& done, ShaderInput *input, ShaderNode *skip_node) { ShaderNode *node = (input->link)? input->link->parent: NULL; - 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); - + foreach(ShaderInput *in, node->inputs) { + find_dependencies(dependencies, done, in, skip_node); + } dependencies.insert(node); } } @@ -482,18 +471,19 @@ void SVMCompiler::generate_svm_nodes(const ShaderNodeSet& nodes, if(!done_flag[node->id]) { bool inputs_done = true; - foreach(ShaderInput *input, node->inputs) - if(!node_skip_input(node, input)) - if(input->link && !done_flag[input->link->parent->id]) - inputs_done = false; - + foreach(ShaderInput *input, node->inputs) { + if(input->link && !done_flag[input->link->parent->id]) { + inputs_done = false; + } + } if(inputs_done) { generate_node(node, done); done.insert(node); done_flag[node->id] = true; } - else + else { nodes_done = false; + } } } } while(!nodes_done); @@ -504,7 +494,7 @@ void SVMCompiler::generate_closure_node(ShaderNode *node, { /* execute dependencies for closure */ foreach(ShaderInput *in, node->inputs) { - if(!node_skip_input(node, in) && in->link) { + if(in->link != NULL) { ShaderNodeSet dependencies; find_dependencies(dependencies, state->nodes_done, in); generate_svm_nodes(dependencies, state); diff --git a/intern/cycles/render/svm.h b/intern/cycles/render/svm.h index af97a490a87..ddf35602fa6 100644 --- a/intern/cycles/render/svm.h +++ b/intern/cycles/render/svm.h @@ -188,8 +188,6 @@ protected: int stack_size(SocketType::Type type); void stack_clear_users(ShaderNode *node, ShaderNodeSet& done); - bool node_skip_input(ShaderNode *node, ShaderInput *input); - /* single closure */ void find_dependencies(ShaderNodeSet& dependencies, const ShaderNodeSet& done, |