Blender Git Commit Log

Git Commits -> Revision b5542c1

Revision b5542c1 by Campbell Barton (master)
June 26, 2021, 07:07 (GMT)
Edit Mesh: optimize common use-cases for partial updates

Skip updating normals & tessellation for contiguous geometry regions
for operations such as translate & uniform scale.

This means when all geometry is selected, no updates are needed
as the relative locations of vertices aren't being modified.

Performance:

As this is skipping a multi-threaded operation,
larger improvements are noticeable on systems with fewer cores.

- ~1.15x to ~1.3x overall gain for 32 cores.
- ~1.7x to ~2.2x overall gain for 1 core (limited using `-t 1` argument).

Details:

- Rotate & non-uniform scale only skip tessellation.

- Proportional editing and axis-mirror have special handling
ensure geometry is properly grouped before considering
a face part of a single group that can be skipped.

- Loose vertices always need their normals to be recalculated
since they're calculated based on the location.

- Non-affine transform operations such as shrink-fatten & bend,
don't take advantage of this optimization.

- Snap projection also disables the optimization.

Commit Details:

Full Hash: b5542c1ea4c29c56338706158578c41f6e65df5c
Parent Commit: c1fe582
Lines Changed: +553, -91

4 Modified Paths:

/source/blender/bmesh/intern/bmesh_mesh_partial_update.c (+246, -15) (Diff)
/source/blender/bmesh/intern/bmesh_mesh_partial_update.h (+15, -4) (Diff)
/source/blender/editors/transform/transform_convert_mesh.c (+290, -72) (Diff)
/source/blender/editors/transform/transform_data.h (+2, -0) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021