Modifier Stack: Limit calculation to required data.
authorBen Batt <benbatt@gmail.com>
Tue, 5 Dec 2006 17:42:03 +0000 (17:42 +0000)
committerBen Batt <benbatt@gmail.com>
Tue, 5 Dec 2006 17:42:03 +0000 (17:42 +0000)
commit4f8079d49cc0cc037ef429123ee6faf031b5c333
tree027e9ed89fd694d45827b4a46431976ab59fa755
parent869eeadeff956f88f48a3b26ea69d0c2938233a3
Modifier Stack: Limit calculation to required data.
This commit upgrades the modifier stack to only calculate the data which is
needed, either by modifiers further down the stack or by other functions at
the end of the stack (e.g. drawing functions).

This speeds up modifier stack recalculation, especially where vertex
groups and UV coordinates are concerned. For example, a mesh with an Armature
modifier followed by a Subsurf modifier would previously have required the
Subsurf modifier to interpolate all the vertex groups in the mesh, slowing
down modifier calculations considerably. With this update, vertex group data
is not propagated beyond the Armature modifier, so calculations are faster.

Note that this depends on the order of modifiers in the stack. If the Armature
and Subsurf modifiers were swapped in the above example, the Subsurf modifier
would have to interpolate vertex groups, as they are needed by the Armature
modifier.
30 files changed:
source/blender/blenkernel/BKE_DerivedMesh.h
source/blender/blenkernel/BKE_customdata.h
source/blender/blenkernel/BKE_displist.h
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/anim.c
source/blender/blenkernel/intern/customdata.c
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/exotic.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/softbody.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenlib/BLI_editVert.h
source/blender/makesdna/DNA_customdata_types.h
source/blender/makesdna/DNA_object_types.h
source/blender/python/api2_2x/Mesh.c
source/blender/python/api2_2x/NMesh.c
source/blender/render/intern/source/convertblender.c
source/blender/src/drawimage.c
source/blender/src/drawmesh.c
source/blender/src/drawobject.c
source/blender/src/editface.c
source/blender/src/editmesh_mods.c
source/blender/src/editobject.c
source/blender/src/poseobject.c
source/blender/src/transform_conversions.c
source/blender/src/verse_object.c
source/blender/src/vpaint.c