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
2021-11-26Geometry Nodes: avoid allocation when construct varray for single valueJacques Lucke
Previously, `GVArray::ForSingle` would always allocate a copy of the passed in value. Now it only does so when the value is too large or not trivial.
2021-09-21Functions: make asserts more correctJacques Lucke
It is valid to e.g. copy construct an integer in the same place, because it is a trivial type. It does not work for types like std::string. This fixes a crash reported in D12584 where it would copy a buffer into itself. We should probably also avoid doing this copy alltogether but that can be done separately.
2021-08-02Cleanup: simplify subclassing CPPTypeJacques Lucke
`CPPType` can wrap any C++ type so that code can work with the wrapped type in a generic way. The goal of subclassing `CPPType` is to provide additional methods for some types. For example, the `CPPType` for `Array<int>` could have a `.element_type()` method that returns the `CPPType` for `int`.
2021-07-26Cleanup: spelling in commentsCampbell Barton
2021-07-05Functions: add utility to create string from value of generic typeJacques Lucke
2021-06-28Functions: improve CPPTypeJacques Lucke
* Reduce code duplication. * Give methods more standardized names (e.g. `move_to_initialized` -> `move_assign`). * Support wrapping arbitrary C++ types, even those that e.g. are not copyable.
2021-06-10Cleanup: add commentJacques Lucke
2021-04-27Geometry Nodes: improve geometry nodes evaluator internal apiJacques Lucke
This is a first step towards T87620. It should not have any functional changes. Goals of this refactor: * Move the evaluator out of `MOD_nodes.cc`. That makes it easier to improve it in isolation. * Extract core input/out parameter management out of `GeoNodeExecParams`. Managing this is the responsibility of the evaluator. This separation of concerns will be useful once we have lazy evaluation of certain inputs/outputs. Differential Revision: https://developer.blender.org/D11085
2021-03-28Cleanup: use parentheses in macroJacques Lucke
2021-03-25BLI: simplify using DefaultHashJacques Lucke
2021-03-21Functions: move CPPType creation related code to separate headerJacques Lucke
This does not need to be included everywhere, because it is only needed in very few translation units that actually define CPPType's.
2021-03-07Geometry Nodes: simplify allocating dynamically sized buffer on stackJacques Lucke
2021-02-04Geometry Nodes: new Is Viewport nodeJacques Lucke
This node outputs true when geometry nodes is currently evaluated for the viewport and false for final renders. Ref T85277. Differential Revision: https://developer.blender.org/D10302
2020-12-02Functions: add move operations to CPPTypeJacques Lucke
Those are sometimes needed when dealing with c++ types in a generic way.
2020-08-07Cleanup: use C++ style casts in various placesJacques Lucke
2020-08-07Merge branch 'blender-v2.90-release' into masterJacques Lucke
2020-08-07Code Style: use "#pragma once" in source directoryJacques Lucke
This replaces header include guards with `#pragma once`. A couple of include guards are not removed yet (e.g. `__RNA_TYPES_H__`), because they are used in other places. This patch has been generated by P1561 followed by `make format`. Differential Revision: https://developer.blender.org/D8466
2020-07-27Particles: initial support for events and actionsJacques Lucke
The following nodes work now (although things can still be improved of course): Particle Birth Event, Praticle Time Step Event, Set Particle Attribute and Execute Condition. Multiple Set Particle Attribute nodes can be chained using the "Execute" sockets. They will be executed from left to right.
2020-07-20Refactor: Update integer type usageJacques Lucke
This updates the usage of integer types in code I wrote according to our new style guides. Major changes: * Use signed instead of unsigned integers in many places. * C++ containers in blenlib use `int64_t` for size and indices now (instead of `uint`). * Hash values for C++ containers are 64 bit wide now (instead of 32 bit). I do hope that I broke no builds, but it is quite likely that some compiler reports slightly different errors. Please let me know when there are any errors. If the fix is small, feel free to commit it yourself. I compiled successfully on linux with gcc and on windows.
2020-07-17Cleanup: avoid static initialization order issues when accessing CPPTypesJacques Lucke
Instead of depending on static initialization order of globals use static variables within functions. Those are initialized on first use. This is every so slighly less efficient, but avoids a full class of problems.
2020-07-12Functions: minor api improvementsJacques Lucke
2020-07-10Functions: make generic types hashableJacques Lucke
2020-07-10Functions: make generic types equality comparableJacques Lucke
2020-07-10Cleanup: various cleanups in for CPPTypeJacques Lucke
2020-07-10Cleanup: structure CPPType according to code style guideJacques Lucke
2020-07-08Cleanup: use c++17 helper variable templatesJacques Lucke
2020-07-08Functions: support hashing MFDataType and CPPTypeJacques Lucke
2020-07-08Cleanup: fix commentJacques Lucke
2020-07-07Functions: Add debug print and destruct callback to CPPTypeJacques Lucke
2020-07-03Cleanup: use nested namespacesJacques Lucke
2020-07-03Cleanup: use trailing underscore for non-public data membersJacques Lucke
2020-06-27Cleanup: make it easier to check if a CPPType is a specific compile time typeJacques Lucke
2020-06-25Cleanup: spellingCampbell Barton
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-13Cleanup: spellingCampbell Barton
2020-06-12Functions: Wrap into blender namespaceSergey Sharybin
Similar to previous commit, aims to resolve compilation on devtoolset-6.
2020-06-09BLI: put C++ data structures in "blender" namespace instead of "BLI"Jacques Lucke
We plan to use the "blender" namespace in other modules as well.
2020-06-09BLI: generally improve C++ data structuresJacques Lucke
The main focus here was to improve the docs significantly. Furthermore, I reimplemented `Set`, `Map` and `VectorSet`. They are now (usually) faster, simpler and more customizable. I also rewrote `Stack` to make it more efficient by avoiding unnecessary copies. Thanks to everyone who helped with constructive feedback. Approved by brecht and sybren. Differential Revision: https://developer.blender.org/D7931
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