Revision 73140ca by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) June 27, 2016, 08:52 (GMT) |
Merge branch 'master' into strand_editmode |
June 26, 2016, 10:45 (GMT) |
Minor whitespace fix. |
June 24, 2016, 14:19 (GMT) |
Added object nodes for looking up an object and transform from global data. |
June 24, 2016, 12:45 (GMT) |
LLVM TypeBuilder and copy function for node_counted_ptr. Using a DerivedMesh directly for mesh data isn't so great because the lifetime of a DM is not necessarily known at compile time, depending on branching. node_counted_ptr is basically a simplified shared_ptr variant. |
June 24, 2016, 08:23 (GMT) |
Use a hash table to register external functions with the LLVM engine. This will allow using BLI/BKE code for complex data types, such as DerivedMesh. |
June 24, 2016, 08:23 (GMT) |
Include mesh opcode functions in modules. Modifier functions with variable expression inputs are disabled, until DerivedMesh handling through LLVM is implemented. |
June 23, 2016, 17:16 (GMT) |
Fix graph return values: Not all value types are returned as duals. |
June 23, 2016, 16:36 (GMT) |
Fix for graph function signature: use pointers also for aggregate and struct types. |
June 23, 2016, 11:43 (GMT) |
Use the LLVM backend for modifier nodes. This currently fails, because the actual mesh nodes are not yet implemented in the LLVM backend. |
June 23, 2016, 10:36 (GMT) |
Reduce repetitive code in the C API by defining static node graph signatures. Node graph inputs/outputs are now defined statically and graph instances can be constructed by passing these as ArrayRefs. The code for compiling various node graph types can then be unified. |
June 22, 2016, 16:25 (GMT) |
More codegen implementations for basic functions. * float/int conversion * float3/float4 getters and setters |
June 22, 2016, 10:35 (GMT) |
Removed unused source file. |
June 21, 2016, 15:42 (GMT) |
Use load/store for float3 and float4 to generate a bit nicer code. It's unclear if the same can be done for larger aggregate types like matrix44. |
June 21, 2016, 14:50 (GMT) |
Define names for most values in generated LLVM code. These are purely for debugging the code, they help a lot in reading LLVM dumps. |
June 20, 2016, 15:38 (GMT) |
New CodeGenerator implementation for replacing the old BVM compiler. |
June 19, 2016, 12:50 (GMT) |
Moved old bvm codegen and function files into bvm module. The intern and compile modules are now truly independent from backends (llvm and bvm). |
June 18, 2016, 10:41 (GMT) |
Refactor of the node graph compiler class, to have a backend-agnostic base. The main compiler class is now itself independent of LLVM and can be used for future backends. The implementation of specific behavior (values, statements, etc.) happens through a CodeGenerator implementation. This also uses aggregation rather than inheritance on the compiler class part (which is not a virtual class itself). |
June 16, 2016, 07:18 (GMT) |
Merge branch 'master' into object_nodes |
June 16, 2016, 07:10 (GMT) |
Use a Scope concept for avoiding codegen for existing nodes. Rather than a single socket value map, use a "scope" to keep track of which nodes are already generated. This reintroduces the "block" idea from earlier versions, but at the later codegen stage rather than the node graph. Describing scope on the level of nodes becomes quite clumsy and ambiguous, and moves nodes further away from the UI representation. The compiler can handle this more elegantly without requiring persistent data. Scopes can be nested. This is not used yet, but will allow scoped variables later on, where the variables being used for a node path depend on its scope. |
June 12, 2016, 12:50 (GMT) |
Removed/Disabled some deprecated code. |
|