6bafe65d289cb61f3897e848dcfe01dff28ea4ea
Due to legacy reasons (`MEdge`), edge calculation was being done with idea that edges cannot be temporarily copied. But today, edges are just `int2`, so using `edge *` instead of `edge` actually made things worse. And since `OrderedEdge` itself is the same thing as `int2`, it does not make sense to use `Map` for edges. So, now edges are in a hash set. To be able to take index of edges, `VectorSet` is used. The only functional change now is that original edges will be reordered as well. This should be okay just like an unintentional but stable indices change. For 2'000 x 2'000 x 2'000 cube edges calculation, change is around `3703.47` -> `2911.18` ms. In order to reduce memory usage, a template parameter is added to `VectorSet` slots, so they can use a 32 instead of 64 bit index type. Without that, the performance change is not consistent and might not be better on a computer with more memory bandwidth. Co-authored-by: Hans Goudey <hans@blender.org> Pull Request: https://projects.blender.org/blender/blender/pulls/120224
…
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%
