Blender Git Commit Log

Git Commits -> Revision 6d4dd66

Revision 6d4dd66 by Lukas Toenne (object_nodes, strand_nodes)
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)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021