Blender Git Commits

Blender Git "strand_nodes" branch commits.

Page: 15 / 37

March 30, 2016, 07:54 (GMT)
Renamed bvm_typedesc to typedesc: It's not actually specific to the bvm backend.
March 29, 2016, 16:48 (GMT)
Restructuring: Remove the 'bvm' prefix from files that are not directly concerned with the bvm backend.

The naming here is a bit confusing: BlenVM is the name used for the overall code module. BVM can be a shorthand
for BlenVM, but is also the name of the backend for SVM-like code interpreter. General purpose code (such as
node graph and util files) should avoid the bvm prefix. BlenVM as the overall name for the code module is kept
for now, but may be replaced at a later point.

Note that currently one bad-level-include from non-bvm to bvm code remains, for the Value class used in nodes.
Values should ultimately be a backend-agnostic class for storing literal values (node inputs).
March 29, 2016, 14:45 (GMT)
Merge branch 'master' into object_nodes
March 9, 2016, 16:25 (GMT)
Cleanup: Moved value class into own file, away from pure type declarations.
March 6, 2016, 14:48 (GMT)
Merge branch 'master' into object_nodes
February 28, 2016, 15:12 (GMT)
Merge branch 'master' into object_nodes
February 8, 2016, 09:21 (GMT)
Merge branch 'master' into object_nodes
February 1, 2016, 11:38 (GMT)
Fix for use of TypeDesc.base_type as a plain value rather than a function call.
January 30, 2016, 12:34 (GMT)
New buffer type 'Image' for 2-dimensional arrays.
January 30, 2016, 10:22 (GMT)
Removed the 'Iteration' node, the main index is now an implicit variable.
January 29, 2016, 13:31 (GMT)
Updated codegen for handling variables and expressions.

Note that kernel nodes now don't have explicit 'function' inputs
any more. Any expression input can be a separate block. Eventually
this should be handled by creating true loops, branches, etc. in the
generated code, rather than reading a jump address from the instructions
and passing it to a blackbox method as a "function pointer".

For the time being the kernel nodes simply prepend a jump address before
*every* input, using BVM_JMP_INVALID in case the input node is not in a
separate block.
January 29, 2016, 10:56 (GMT)
Adapted the node blockify procedure to the new concept of expressions and variables.

The internal bvm nodes now can contain (implicit) cyclic connections, owing to the
connection of variable inputs to local variable outputs of kernel nodes. These link
cycles are never created explicitly by the node parser (pynodes), but are a result
of the semi-functional programming nature of the nodes: each node constitutes a
function of the local variables defined inside a kernel block. When the nodes are first
constructed from the user-level nodes these inputs are left unbound, and are then
resolved backwards as the individual node functions are inlined.
January 26, 2016, 10:51 (GMT)
Redefinition of the meaning of "value type" for sockets (intermediate commit).

The use of "expressions" for node inputs must be generalized to support array-like
data and a level of functional programming. Inputs are now expressions *by default*.

A node can also have "variables" as inputs, which are implicitly defined in the base node
graph and should not be bounded in the first compiler step (i.e. are not defined by
pynodes). Variables instead are defined as outputs of other nodes (currently still called
"kernel" nodes), which would mostly constitute loops over such variables.

The concepts being worked on here are loosely based on those found in the Halide language
http://halide-lang.org/index.html
January 24, 2016, 13:43 (GMT)
Merge branch 'master' into object_nodes
January 22, 2016, 09:56 (GMT)
Mockup Nodes: Dummy pynodes for smoke and rigidbody simulations.

These have no implementation yet, they are just meant to test concepts.
January 19, 2016, 22:29 (GMT)
Basic image sampling node for reading interpolated color values from an Image datablock.
January 19, 2016, 15:41 (GMT)
Cleanup: Simplify depsgraph API by using the same depsnode type for each ID.

This means the user might use an invalid component key for generating dependencies,
but the only consequence is that no relation is created.
January 18, 2016, 12:05 (GMT)
Two-level use-count system for bvm pointer variables.

The rationale for this change is that copying variables on the bvm stack
will become necessary for compound variables (structs). In order to
efficiently keep pointers on the stack without making deep copies every
time such a variable is copied, the pointer must be a kind of shared_ptr
concept. In addition to this the stack variable itself must also be counted,
so that we have a way of detecting when it "goes out of scope", i.e. all
nodes using it have finished.

The node_counted_ptr is not a full C++ shared_ptr, because the user counting
is handled explicitly by the compiled bvm instructions. Using a std::shared_ptr
would be difficult due to the mixed levels of evaluation (compile-time constants,
storing shared_ptr on the opaque stack), and because of difficult interfacing
with C code (returning persistent plain pointers).
January 16, 2016, 16:44 (GMT)
Cleanup: use size_t (i.e. size in bytes) for data types, rather than explicit stack size.

The stack size is calculated during codegen by an int-ceil division,
currently padding to int size (probably later to be changed to int4 for
better SSE support).
January 16, 2016, 16:25 (GMT)
Cleanup: Use an real type 'EvalStack' for passing the value stack around.

This should avoid possible confusion of values (floats) with the more
abstract value stack.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021