Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-07-13BLI: fix constructor regression for Vector and ArrayJacques Lucke
This was introduced in rB403384998a6bb5f428e15ced5.
2020-07-11Nodes: support implicit conversions and incorrectly linked socketsJacques Lucke
2020-07-10Functions: make generic types hashableJacques Lucke
2020-07-10Functions: make generic types equality comparableJacques Lucke
2020-07-08BLI: improve constructors and conversions to spanJacques Lucke
This allows us to avoid many calls to `as_span()` methods. I will remove those in the next commit. Furthermore, constructors of Vector and Array can convert from one type to another now. I tested these changes on Linux with gcc and on Windows.
2020-07-08Cleanup: add correct license header to testsJacques Lucke
2020-07-07Functions: add generic functions that output constantsJacques Lucke
2020-07-07Functions: Add debug print and destruct callback to CPPTypeJacques Lucke
2020-07-06BLI: improve exception safety of memory utilsJacques Lucke
Even if we do not use exception in many places in Blender, our core C++ library should become exception safe. Otherwise, we don't even have the option to work with exceptions if we decide to do so.
2020-07-03Cleanup: use nested namespacesJacques Lucke
2020-06-30Functions: add two more customizable multi-functionsJacques Lucke
2020-06-27Functions: add MutableAttributesRef data structureJacques Lucke
This will be used to reference the content of a CustomData structure in C++ code, that does not need to know who owns the data but only works with it.
2020-06-27Cleanup: make it easier to check if a CPPType is a specific compile time typeJacques Lucke
2020-06-23Functions: Multi Function NetworkJacques Lucke
A multi-function network is a graph data structure, where nodes are multi-functions (or dummies) and links represent data flow. New multi-functions can be derived from such a network. For that one just has to specify two sets of sockets in the network that represent the inputs and outputs of the new function. It is possible to do optimizations like constant folding on this data structure, but that is not implemented in this patch yet. In a next step, user generated node trees are converted into a MFNetwork, so that they can be evaluated efficiently for many particles. This patch also includes some tests that cover the majority of the code. However, this seems to be the kind of code that is best tested by some .blend files. Building graph structures in code is possible, but is not easy to understand afterwards. Reviewers: brecht Differential Revision: https://developer.blender.org/D8049
2020-06-22Functions: add utilities that allow creating some multi-functions with less ↵Jacques Lucke
typing
2020-06-22Functions: Various improvements to the spans and generic data structuresJacques Lucke
Most of this code is covered by unit tests.
2020-06-16Functions: Multi FunctionJacques Lucke
This adds the `MultiFunction` type and some smallish utility types that it uses. A `MultiFunction` encapsulates a function that is optimized for throughput by always processing many elements at once. This is an important part of the new particle system, because it allows us to execute user generated node trees for many particles efficiently. Reviewers: brecht Differential Revision: https://developer.blender.org/D8030
2020-06-12Functions: Wrap into blender namespaceSergey Sharybin
Similar to previous commit, aims to resolve compilation on devtoolset-6.
2020-06-08Functions: Run-time type system and index maskJacques Lucke
This adds a new `CPPType` that encapsulates information about how to handle instances of a specific data type. This is necessary for the function evaluation system, which will be used to evaluate most of the particle node trees. Furthermore, this adds an `IndexMask` class which offers a surprisingly useful abstraction over an array containing unsigned integers. It makes two assumptions about the underlying integer array: * The integers are in ascending order. * There are no duplicates. `IndexMask` will be used to "select" certain particles that will be processed in a data-oriented way. Sometimes, operations don't have to be applied to all particles, but only some, those that are in the indexed by the `IndexMask`. The two limitations imposed by an `IndexMask` allow for better performance. Reviewers: brecht Differential Revision: https://developer.blender.org/D7957