Revision b2cb4c4 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) April 19, 2016, 12:01 (GMT) |
Define BMEditStrands struct as an extension of BMEditMesh. The advantage is that we can now use this struct in the (rather involved) process of generating a display DerivedMesh and apply modifiers to it. |
Revision 216aacb by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) April 19, 2016, 11:27 (GMT) |
Disable regular mesh drawing in hair edit mode. |
Revision ec51e83 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) April 18, 2016, 16:13 (GMT) |
Proof-of-concept: Hair edit data from regular meshes. This adds the possibility to edit a regular mesh like strand data. It's more of a test for independence from particles than a real use case, but could come in handy anyway. |
Revision 9a20f68 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) April 18, 2016, 15:48 (GMT) |
Check mesh samples for zero weights on eval to detect invalid/unusable samples. |
Revision a85c9b2 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) April 17, 2016, 13:08 (GMT) |
Corrected implementation of the strand relaxation method ported from particles. This is still the same algorithm as in particle edit mode, but cleaned up some unnecessary complications and use much more meaningful variable names. |
Revision 07221e9 by Lukas Toenne (hair_guides, hair_guides_grooming, hair_object, strand_editmode, strand_gpu, strand_nodes, tmp_hair_curves) April 16, 2016, 16:10 (GMT) |
Merge branch 'master' into strand_editmode |
April 12, 2016, 08:27 (GMT) |
Remove the unordered_map cmake monstrosity from subdirectory build files. Doing this in the top-level cmake file for blenvm is enough. |
April 12, 2016, 08:12 (GMT) |
Extended debug printing modes to the LLVM code. The LLVM IR code can be dumped either in raw form or optimized. It is stored as a raw text file. |
April 11, 2016, 15:21 (GMT) |
Minor fixes for compiling without LLVM. |
April 11, 2016, 14:51 (GMT) |
Fix expression result use as function arguments and add RGBA color mix node. |
April 11, 2016, 07:16 (GMT) |
Inlining of base node functions in LLVM IR code. This requires a somewhat hackish stub function to force linking of inlined functions in the modules, so that clang doesn't just omit them when producing IR code. Not very nice, but also not directly related to the actual Blender code. |
April 9, 2016, 13:47 (GMT) |
Optimization passes for the generated LLVM code. |
April 8, 2016, 15:28 (GMT) |
Completed basic expression tree code generation. The code uses a pointer-based signature convention for node functions, which helps to avoid issues with type coercion through clang. In the future we could either find a more reliable way to produce llvm IR for the nodes, or use node functions as external functions without inlining. |
April 7, 2016, 15:54 (GMT) |
Use annotation attributes on module functions to avoid name mangling issues. Names in C++ code tend to get mangled by the clang compiler according to the respective target ABI. This is unfortunate because it makes it difficult to map functions to nodes by name. For now we use a function attribute in the module C++ code to pass on the "true" name of the function and map them internally. |
April 7, 2016, 15:53 (GMT) |
Make LLVM module compilation depend on header files to force recompile when headers change. |
April 6, 2016, 15:52 (GMT) |
Generate function calls for every node, using code defined in precompiled modules. Note that this is currently not quite working: The clang compiler call used tentatively for generating the LLVM IR code for modules uses a lowering pass to coerce struct data types (such as float3) according to the target ABI. This should be avoided and is unnecessary for our purposes, since we stitch together and optimize these code fragments ourselves. In principle we could avoid using a C compiler altogether and write this stuff by hand, but the point of using the compiler is to avoid this tedious work. More info: http://stackoverflow.com/questions/22776391/why-does-clang-coerce-struct-parameters-to-ints |
April 5, 2016, 15:57 (GMT) |
Ported over code from previous llvm branch for loading IR modules and linking runtime code. |
April 5, 2016, 14:58 (GMT) |
Initial code for mapping node sockets to llvm values. |
April 5, 2016, 14:32 (GMT) |
Cleanup: Fixed deprecated docstrings for file location. |
April 5, 2016, 14:26 (GMT) |
Cleanup: Renamed Value class to NodeValue, to distinguish from llvm::Value easier. |
|