Blender Git Loki
Git Commits -> Revision 6d4dd66
June 9, 2016, 10:29 (GMT) |
Generalized code generation for nodes to support more complex control flow in the future. The basic idea is that a node represents a function F, without assuming anything about how the input expressions are evaluated: F = F() In most common case this function can be decomposed and defined in terms of concrete values, which are given by the input expressions: F = F'(G1(), G2(), ...), where Gn are the respective inputs of the node This is a first *very* naive implementation. It would rely heavily on common-subexpression- elimination (CSE) to avoid generating the same code paths over and over again. There should probably be some initial optimization on the BVM node level instead of relying just on LLVM passes. The purpose of this generalization is to allow more complicated control flow inside node functions. Nodes would then also be able to take additional variable arguments (e.g. an index), which can be modified before being used as internal arguments for input expressions. |
Commit Details:
Full Hash: 6d4dd66d1fd4d0fdab930715c52cf1072359ab34
Parent Commit: a6fdd7d
Lines Changed: +152, -106
5 Modified Paths:
/source/blender/blenvm/compile/node_graph.cc (+2, -0) (Diff)
/source/blender/blenvm/compile/node_graph.h (+4, -0) (Diff)
/source/blender/blenvm/llvm/llvm_compiler.cc (+51, -42) (Diff)
/source/blender/blenvm/llvm/llvm_compiler.h (+58, -22) (Diff)
/source/blender/blenvm/llvm/llvm_compiler_dual.cc (+37, -42) (Diff)
/source/blender/blenvm/compile/node_graph.h (+4, -0) (Diff)
/source/blender/blenvm/llvm/llvm_compiler.cc (+51, -42) (Diff)
/source/blender/blenvm/llvm/llvm_compiler.h (+58, -22) (Diff)
/source/blender/blenvm/llvm/llvm_compiler_dual.cc (+37, -42) (Diff)