Hans Goudey
7f958217ad
Curves: Use shared caches for evaluated data
...
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
2023-02-03 12:19:40 -05:00
..
2023-02-03 12:19:40 -05:00
2022-06-23 11:45:53 +02:00
2023-01-18 18:41:13 +11:00
2023-01-09 14:52:06 +01:00
2022-10-04 16:52:10 +11:00
2022-11-01 12:24:58 +11:00
2022-12-02 14:48:51 +01:00
2022-12-02 14:44:54 -06:00
2023-01-10 01:01:43 -05:00
2023-01-19 15:37:36 -06:00
2022-11-26 10:12:58 -06:00
2023-01-12 12:46:22 +02:00
2022-10-06 12:13:00 +11:00
2023-01-18 18:41:13 +11:00
2023-01-18 18:41:13 +11:00
2023-01-18 18:41:13 +11:00
2023-01-10 00:10:43 -05:00
2022-08-27 14:52:31 +10:00
2022-06-03 09:45:08 +02:00
2022-06-30 23:48:22 +10:00
2022-12-20 19:16:33 -03:00
2022-09-11 21:42:41 -05:00
2023-01-06 17:55:02 +02:00
2023-02-01 14:41:40 +11:00
2023-01-18 18:41:13 +11:00
2022-05-06 13:33:23 +02:00
2022-12-29 20:46:05 +01:00
2022-06-30 23:48:22 +10:00
2022-12-18 19:13:15 -06:00
2022-11-12 18:33:31 +01:00
2023-02-02 11:46:23 -07:00
2022-09-13 11:07:38 +02:00
2022-09-26 17:58:36 +10:00
2023-01-16 12:06:36 -06:00
2023-01-06 11:41:36 -05:00
2022-03-22 09:54:13 -05:00
2023-01-23 14:43:04 -06:00
2023-01-18 18:41:13 +11:00
2023-02-03 12:19:40 -05:00
2022-05-17 12:54:05 +10:00
2023-01-16 13:57:10 +11:00
2023-01-19 09:24:52 +01:00
2022-12-20 14:17:30 +01:00
2023-01-10 00:10:43 -05:00
2023-01-18 18:41:13 +11:00
2022-11-01 12:24:04 +11:00
2022-11-05 13:47:01 +11:00
2022-10-12 20:55:57 -05:00
2023-01-10 01:01:43 -05:00
2022-09-29 18:32:44 -05:00
2022-09-14 21:30:56 +02:00
2022-08-17 12:51:07 +10:00
2022-12-01 15:41:50 +01:00
2023-01-17 12:50:06 -06:00
2023-02-02 11:46:23 -07:00
2023-01-18 18:41:13 +11:00
2023-01-18 18:41:13 +11:00
2023-01-19 08:18:37 +01:00
2023-01-18 18:41:13 +11:00
2022-06-29 22:54:29 +08:00
2022-04-11 12:03:09 +10:00
2023-01-18 18:41:13 +11:00
2022-09-15 19:13:13 +02:00
2023-01-17 12:05:21 +11:00
2023-01-20 17:36:47 -06:00
2023-01-24 18:15:06 +01:00
2022-10-03 20:45:06 +02:00
2023-01-18 18:41:13 +11:00
2022-07-14 21:27:58 -07:00
2023-01-06 20:09:51 +01:00
2023-01-18 18:41:13 +11:00
2023-02-02 11:46:23 -07:00
2023-01-13 17:22:07 -06:00
2022-08-17 10:20:25 -04:00
2022-10-04 10:53:05 +02:00
2022-09-21 12:00:01 +10:00
2023-01-09 18:56:17 +11:00
2022-11-30 11:16:14 +01:00
2022-09-16 18:14:33 +10:00
2022-07-27 15:33:29 +02:00
2022-10-05 14:26:45 +02:00
2022-04-04 13:34:42 +10:00
2022-07-06 13:30:15 +03:00
2022-08-17 10:20:25 -04:00
2022-10-05 13:48:01 -05:00
2023-02-02 11:46:23 -07:00
2023-01-10 00:10:43 -05:00
2023-01-11 14:00:20 +11:00
2023-01-31 14:22:23 +11:00
2023-01-10 00:10:43 -05:00
2022-08-29 16:55:26 -05:00
2022-12-17 14:11:11 +11:00
2023-01-10 00:10:43 -05:00
2023-01-10 01:01:43 -05:00
2023-01-10 00:10:43 -05:00
2023-01-18 18:41:13 +11:00
2023-01-27 14:34:10 -06:00
2022-10-06 10:49:24 -05:00
2023-01-05 12:40:34 +01:00
2023-01-20 09:20:56 -06:00
2023-02-02 13:20:25 -05:00
2023-01-09 23:29:58 -05:00
2022-11-18 11:20:13 +01:00
2023-01-28 10:07:29 +01:00
2023-01-18 18:41:13 +11:00
2022-08-19 22:21:04 +02:00
2022-03-24 16:54:01 +11:00
2023-01-19 18:22:59 -08:00
2023-01-18 18:41:13 +11:00
2023-01-23 10:44:50 -08:00
2023-01-23 10:44:50 -08:00
2022-12-17 15:58:30 +11:00
2023-01-18 18:41:13 +11:00
2023-01-02 16:39:51 +01:00
2022-04-06 18:02:58 +10:00
2022-04-11 12:03:09 +10:00
2022-09-14 21:30:56 +02:00
2022-11-01 17:43:38 +01:00
2022-12-17 13:06:43 +11:00
2022-11-05 13:47:01 +11:00
2022-04-05 08:02:01 +10:00
2022-09-14 14:37:18 -05:00
2022-07-18 13:59:08 +02:00
2023-01-10 00:10:43 -05:00
2022-11-15 13:48:00 -06:00
2023-01-10 00:10:43 -05:00
2023-01-18 18:41:13 +11:00
2022-04-26 14:02:49 +10:00
2022-11-22 11:49:56 +01:00
2023-01-07 17:32:28 +01:00
2023-01-23 00:33:55 +01:00
2022-06-10 11:17:14 +02:00
2022-09-28 17:54:59 +02:00
2023-01-10 00:10:43 -05:00
2023-02-02 11:46:23 -07:00
2022-10-21 20:10:17 -06:00
2023-02-03 08:48:00 -05:00
2022-09-06 16:25:20 +10:00
2022-12-05 12:58:18 +11:00