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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-12-11 16:33:24 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-12-11 16:34:52 +0300
commitb45b082531ca8d4e2bd7b06616b27b21f42fe542 (patch)
tree949bc39a613e3f4d95b172bb62fcf80dd67f8797 /intern/cycles
parent765795aed7bfc738eb3c911ce5e5496fd0879a23 (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.cpp32
-rw-r--r--intern/cycles/render/svm.h2
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,