Commit: b45b082531ca8d4e2bd7b06616b27b21f42fe542
Author: Sergey Sharybin
Date: Tue Dec 11 14:33:24 2018 +0100
Branches: master
https://developer.blender.org/rBb45b082531ca8d4e2bd7b06616b27b21f42fe542
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.
===================================================================
M intern/cycles/render/svm.cpp
M intern/cycles/render/svm.h
===================================================================
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,
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs