Subdiv: Initial implementation of topology cache
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 15 Jan 2019 14:34:11 +0000 (15:34 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 16 Jan 2019 10:00:43 +0000 (11:00 +0100)
commitb0c6c65e7b45bf66f2f9e0aa3718be7eb0f72f81
tree74f3aeb53634bd80bdca4d5626ee9e8fe09b5caf
parente064777cac02a065e20a9453f6d2a03651250d56
Subdiv: Initial implementation of topology cache

This commit makes it so OpenSubdiv's topology refiner is kept
in memory and reused for until topology changes. There are the
following modifications which causes topology refiner to become
invalid:

- Change in a mesh topology (for example, vertices, edges, and
  faces connectivity).
- Change in UV islands (adding new islands, merging them and
  so on),
- Change in UV smoothing options.
- Change in creases.
- Change in Catmull-Clark / Simple subdivisions.

The following limitations are known:

- CPU evaluator is not yet cached.
- UV islands topology is not checked.

The UV limitation is currently a stopper for making this cache
enabled by default.
source/blender/blenkernel/BKE_subdiv.h
source/blender/blenkernel/intern/subdiv.c
source/blender/blenkernel/intern/subdiv_converter.h
source/blender/blenkernel/intern/subdiv_stats.c
source/blender/blenloader/intern/readfile.c
source/blender/makesdna/DNA_modifier_types.h
source/blender/modifiers/intern/MOD_subsurf.c