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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-09-21 15:54:28 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-09-21 15:54:28 +0400
commit508bfebf361be55601b1bdbb9267c47c53da4c00 (patch)
tree9cd4d460e9d6474ff4d3ff5bacfbc1cbe58608b9 /intern/cycles/render/svm.h
parenta2c6db0b446cc3c8e54a0381e041056fe143472a (diff)
Cycles: another bugfix for mix closure sampling + bump.
Diffstat (limited to 'intern/cycles/render/svm.h')
-rw-r--r--intern/cycles/render/svm.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/intern/cycles/render/svm.h b/intern/cycles/render/svm.h
index 4c23e931e09..d66d3816068 100644
--- a/intern/cycles/render/svm.h
+++ b/intern/cycles/render/svm.h
@@ -104,6 +104,15 @@ protected:
int users[SVM_STACK_SIZE];
};
+ struct StackBackup {
+ Stack stack;
+ vector<int> offsets;
+ set<ShaderNode*> done;
+ };
+
+ void stack_backup(StackBackup& backup, set<ShaderNode*>& done);
+ void stack_restore(StackBackup& backup, set<ShaderNode*>& done);
+
void stack_clear_temporary(ShaderNode *node);
int stack_size(ShaderSocketType type);
int stack_find_offset(ShaderSocketType type);
@@ -113,7 +122,7 @@ protected:
void find_dependencies(set<ShaderNode*>& dependencies, const set<ShaderNode*>& done, ShaderInput *input);
void generate_svm_nodes(const set<ShaderNode*>& nodes, set<ShaderNode*>& done);
- void generate_closure(ShaderNode *node, set<ShaderNode*> done, Stack stack);
+ void generate_closure(ShaderNode *node, set<ShaderNode*>& done);
void generate_multi_closure(ShaderNode *node, set<ShaderNode*>& done, uint in_offset);
void compile_type(Shader *shader, ShaderGraph *graph, ShaderType type);
@@ -121,6 +130,7 @@ protected:
vector<int4> svm_nodes;
ShaderType current_type;
Shader *current_shader;
+ ShaderGraph *current_graph;
Stack active_stack;
int max_stack_use;
uint mix_weight_offset;