diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-03-07 13:13:40 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-03-07 13:29:50 +0300 |
commit | ab0bc65c24bdf68c356adb2566f3669153c931ea (patch) | |
tree | 23909478874a13d84e504a905809eb211e62a9e2 /source/blender/blenkernel/BKE_DerivedMesh.h | |
parent | cee53160d2bd9067a3d43cc862ce61e36ff70454 (diff) |
Refactor CDData masks, to have one mask per mesh elem type.
We already have different storages for cddata of verts, edges etc.,
'simply' do the same for the mask flags we use all around Blender code
to request some data, or limit some operation to some layers, etc.
Reason we need this is that some cddata types (like Normals) are
actually shared between verts/polys/loops, and we don’t want to generate
clnors everytime we request vnors!
As a side note, this also does final fix to T59338, which was the
trigger for this patch (need to request computed loop normals for
another mesh than evaluated one).
Reviewers: brecht, campbellbarton, sergey
Differential Revision: https://developer.blender.org/D4407
Diffstat (limited to 'source/blender/blenkernel/BKE_DerivedMesh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_DerivedMesh.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index fb78e03639b..cd7422415dc 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -75,6 +75,7 @@ struct BMEditMesh; struct CCGElem; struct CCGKey; +struct CustomData_MeshMasks; struct Depsgraph; struct MEdge; struct MFace; @@ -348,7 +349,7 @@ void DM_from_template_ex( DerivedMesh *dm, DerivedMesh *source, DerivedMeshType type, int numVerts, int numEdges, int numTessFaces, int numLoops, int numPolys, - CustomDataMask mask); + const struct CustomData_MeshMasks *mask); void DM_from_template( DerivedMesh *dm, DerivedMesh *source, DerivedMeshType type, @@ -362,10 +363,11 @@ int DM_release(DerivedMesh *dm); /** utility function to convert a DerivedMesh to a Mesh */ -void DM_to_mesh(DerivedMesh *dm, struct Mesh *me, struct Object *ob, CustomDataMask mask, bool take_ownership); +void DM_to_mesh(DerivedMesh *dm, struct Mesh *me, struct Object *ob, + const struct CustomData_MeshMasks *mask, bool take_ownership); -void DM_set_only_copy(DerivedMesh *dm, CustomDataMask mask); +void DM_set_only_copy(DerivedMesh *dm, const struct CustomData_MeshMasks *mask); /* adds a vertex/edge/face custom data layer to a DerivedMesh, optionally * backed by an external data array @@ -488,27 +490,27 @@ void mesh_get_mapped_verts_coords(struct Mesh *me_eval, float (*r_cos)[3], const DerivedMesh *mesh_create_derived_render( struct Depsgraph *depsgraph, struct Scene *scene, - struct Object *ob, CustomDataMask dataMask); + struct Object *ob, const struct CustomData_MeshMasks *dataMask); /* same as above but wont use render settings */ DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]); struct Mesh *editbmesh_get_eval_cage( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *, - struct BMEditMesh *em, CustomDataMask dataMask); + struct BMEditMesh *em, const struct CustomData_MeshMasks *dataMask); struct Mesh *editbmesh_get_eval_cage_from_orig( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *, - struct BMEditMesh *em, CustomDataMask dataMask); + struct BMEditMesh *em, const struct CustomData_MeshMasks *dataMask); struct Mesh *editbmesh_get_eval_cage_and_final( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *, - struct BMEditMesh *em, CustomDataMask dataMask, + struct BMEditMesh *em, const struct CustomData_MeshMasks *dataMask, struct Mesh **r_final); float (*editbmesh_get_vertex_cos(struct BMEditMesh *em, int *r_numVerts))[3]; bool editbmesh_modifier_is_enabled(struct Scene *scene, struct ModifierData *md, bool has_prev_mesh); void makeDerivedMesh( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct BMEditMesh *em, - CustomDataMask dataMask, const bool build_shapekey_layers); + const struct CustomData_MeshMasks *dataMask, const bool build_shapekey_layers); void DM_add_named_tangent_layer_for_uv( CustomData *uv_data, CustomData *tan_data, int numLoopData, |