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. |
|