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:
Diffstat (limited to 'intern/cycles/render/svm.cpp')
-rw-r--r--intern/cycles/render/svm.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp
index ae666ddfe68..46c6149ab32 100644
--- a/intern/cycles/render/svm.cpp
+++ b/intern/cycles/render/svm.cpp
@@ -161,6 +161,14 @@ int SVMCompiler::stack_find_offset(ShaderSocketType type)
return offset;
}
+void SVMCompiler::stack_clear_offset(ShaderSocketType type, int offset)
+{
+ int size = stack_size(type);
+
+ for(int i = 0; i < size; i++)
+ active_stack.users[offset + i]--;
+}
+
void SVMCompiler::stack_backup(StackBackup& backup, set<ShaderNode*>& done)
{
backup.done = done;
@@ -261,11 +269,7 @@ void SVMCompiler::stack_clear_users(ShaderNode *node, set<ShaderNode*>& done)
all_done = false;
if(all_done) {
- int size = stack_size(output->type);
-
- for(int i = 0; i < size; i++)
- active_stack.users[output->stack_offset + i]--;
-
+ stack_clear_offset(output->type, output->stack_offset);
output->stack_offset = SVM_STACK_INVALID;
foreach(ShaderInput *in, output->links)
@@ -279,11 +283,7 @@ void SVMCompiler::stack_clear_temporary(ShaderNode *node)
{
foreach(ShaderInput *input, node->inputs) {
if(!input->link && input->stack_offset != SVM_STACK_INVALID) {
- int size = stack_size(input->type);
-
- for(int i = 0; i < size; i++)
- active_stack.users[input->stack_offset + i]--;
-
+ stack_clear_offset(input->type, input->stack_offset);
input->stack_offset = SVM_STACK_INVALID;
}
}
@@ -514,14 +514,14 @@ void SVMCompiler::generate_multi_closure(ShaderNode *node, set<ShaderNode*>& don
generate_multi_closure(cl1in->link->parent, done, out1_offset);
if(fin)
- active_stack.users[out1_offset]--;
+ stack_clear_offset(SHADER_SOCKET_FLOAT, out1_offset);
}
if(cl2in->link) {
generate_multi_closure(cl2in->link->parent, done, out2_offset);
if(fin)
- active_stack.users[out2_offset]--;
+ stack_clear_offset(SHADER_SOCKET_FLOAT, out2_offset);
}
}
else {