2e4d2ad5ab71a07aeb38baf9cb32adf4ff1e22ec
Previously, `VArrayImpl` had a `materialize` and `materialize_to_uninitialized` function. Now both are merged into one with an additional `bool dst_is_uninitialized` parameter. The same is done for the `materialize_compressed` method as all as `GVArrayImpl`. While this kind of merging is typically not ideal, it reduces the binary size by ~200kb while being basically free performance wise. The cost of this predictable boolean check is expected to be negligible even if only very few indices are materialized. Additionally, in most cases, this parameter does not even have to be checked, because for trivial types it does not matter if the destination array is already initialized or not when overwriting it. It saves this much memory, because there are quite a few implementations being generated with e.g. `VArray::from_func` and a lot of code was duplicated for each instantiation. This changes only the actual `(G)VArrayImpl`, but not the `VArray` and `GVArray` API which is typically used to work with virtual arrays. Pull Request: https://projects.blender.org/blender/blender/pulls/145144
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
