7f958217ada294a3aa19116aebb7bef832b9c648
Use the `SharedCache` concept introduced in D16204 to share lazily calculated evaluated data between original and multiple evaluated curves data-blocks. Combined with D14139, this should basically remove most costs associated with copying large curves data-blocks (though they add slightly higher constant overhead). The caches should interact well with undo steps, limiting recalculations on undo/redo. Options for avoiding the new overhead associated with the shared caches are described in T104327 and can be addressed separately. Simple situations affected by this change are using any of the following data on an evaluated curves data-block without first invalidating it: - Evaluated offsets (size of evaluated curves) - Evaluated positions - Evaluated tangents - Evaluated normals - Evaluated lengths (spline parameter node) - Internal Bezier and NURBS caches In a test with 4m points and 170k curves, using curve normals in a procedural setup that didn't change positions procedurally gave 5x faster playback speeds. Avoiding recalculating the offsets on every update saved about 3 ms for every sculpt update for brushes that don't change topology. Differential Revision: https://developer.blender.org/D17134
…
…
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
11%
C
6.3%
GLSL
2.2%
CMake
1.3%
Other
1.1%
