Blender Git Commits

Blender Git "strand_nodes" branch commits.

Page: 13 / 37

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.
April 19, 2016, 11:27 (GMT)
Disable regular mesh drawing in hair edit mode.
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.
April 18, 2016, 15:48 (GMT)
Check mesh samples for zero weights on eval to detect invalid/unusable samples.
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.
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.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021