586fadd6d2747a313f0ec9c7f4e45bde10d08efe
This adds hash-based data deduplication when baking in geometry nodes. All arrays that are written to `.blob` files are hashed. If an array is detected to have the same hash as a previously written array, it is not written again. Instead the same memory is reused. We already have a similar optimization, but that only worked .with data that was already implicitly shared. Doing this kind of deduplication with implicitly shared data has the benefit, that the equality check is constant time. The hash based approach implemented here requires linear time in the size of the array, but works on all kinds of data. Both optimizations work together. So the hashing is skipped if possible. The hash-based deduplication primarily benefits cases where the data is regenerated on each frame, so the data between .frames is not shared. One example used to require 2.9 GB disk space. Now it only requires 542 MB. Additionally, the duplicate arrays will now be implicitly shared between frames when reading the baked data later. An extended version of this approach which also detects partial duplicates is implemented in #117749. Pull Request: https://projects.blender.org/blender/blender/pulls/117768
…
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%
