Commit: c0f754d9b125543e590f0302e92085836d216f64 Author: Hans Goudey Date: Sun Oct 2 23:34:27 2022 -0500 Branches: refactor-mesh-position-generic https://developer.blender.org/rBc0f754d9b125543e590f0302e92085836d216f64
Merge branch 'master' into refactor-mesh-position-generic =================================================================== =================================================================== diff --cc source/blender/blenkernel/BKE_collision.h index 44c1b2a3cbd,c390d0a8802..1aaddebed91 --- a/source/blender/blenkernel/BKE_collision.h +++ b/source/blender/blenkernel/BKE_collision.h @@@ -84,10 -85,10 +84,10 @@@ typedef struct FaceCollPair ///////////////////////////////////////////////// ///////////////////////////////////////////////// - // used in modifier.c from collision.c + // used in modifier.cc from collision.c ///////////////////////////////////////////////// -struct BVHTree *bvhtree_build_from_mvert(const struct MVert *mvert, +struct BVHTree *bvhtree_build_from_mvert(const float (*positions)[3], const struct MVertTri *tri, int tri_num, float epsilon); diff --cc source/blender/blenkernel/intern/mball_tessellate.cc index dd10a6f8646,9b32456c6c1..00778ce2d79 --- a/source/blender/blenkernel/intern/mball_tessellate.cc +++ b/source/blender/blenkernel/intern/mball_tessellate.cc @@@ -1439,15 -1461,19 +1461,16 @@@ Mesh *BKE_mball_polygonize(Depsgraph *d Mesh *mesh = (Mesh *)BKE_id_new_nomain(ID_ME, ((ID *)ob->data)->name + 2); - mesh->totvert = int(process.curvertex); - MVert *mvert = static_cast<MVert *>( - CustomData_add_layer(&mesh->vdata, CD_MVERT, CD_CONSTRUCT, NULL, mesh->totvert)); - for (int i = 0; i < mesh->totvert; i++) { - copy_v3_v3(mvert[i].co, process.co[i]); - } - MEM_freeN(process.co); + mesh->totvert = (int)process.curvertex; + CustomData_add_layer_named( + &mesh->vdata, CD_PROP_FLOAT3, CD_ASSIGN, process.co, mesh->totvert, "position"); + process.co = NULL; - mesh->totpoly = (int)process.curindex; - MPoly *mpoly = CustomData_add_layer(&mesh->pdata, CD_MPOLY, CD_CONSTRUCT, NULL, mesh->totpoly); - MLoop *mloop = CustomData_add_layer( - &mesh->ldata, CD_MLOOP, CD_CONSTRUCT, NULL, mesh->totpoly * 4); + mesh->totpoly = int(process.curindex); + MPoly *mpoly = static_cast<MPoly *>( + CustomData_add_layer(&mesh->pdata, CD_MPOLY, CD_CONSTRUCT, NULL, mesh->totpoly)); + MLoop *mloop = static_cast<MLoop *>( + CustomData_add_layer(&mesh->ldata, CD_MLOOP, CD_CONSTRUCT, NULL, mesh->totpoly * 4)); int loop_offset = 0; for (int i = 0; i < mesh->totpoly; i++) { diff --cc source/blender/blenkernel/intern/mesh_fair.cc index 1a219c0b83e,df61169fa5c..2647b3b4990 --- a/source/blender/blenkernel/intern/mesh_fair.cc +++ b/source/blender/blenkernel/intern/mesh_fair.cc @@@ -26,7 -26,7 +26,8 @@@ #include "MEM_guardedalloc.h" #include "eigen_capi.h" + using blender::Array; +using blender::float3; using blender::Map; using blender::MutableSpan; using blender::Span; diff --cc source/blender/blenkernel/intern/mesh_iterators.cc index 50a27836c74,46f9780f891..d983cc440b3 --- a/source/blender/blenkernel/intern/mesh_iterators.cc +++ b/source/blender/blenkernel/intern/mesh_iterators.cc @@@ -65,15 -65,15 +65,15 @@@ void BKE_mesh_foreach_mapped_vert } } else { - const MVert *mv = BKE_mesh_verts(mesh); + const float(*positions)[3] = BKE_mesh_positions(mesh); - const int *index = CustomData_get_layer(&mesh->vdata, CD_ORIGINDEX); + const int *index = static_cast<const int *>(CustomData_get_layer(&mesh->vdata, CD_ORIGINDEX)); const float(*vert_normals)[3] = (flag & MESH_FOREACH_USE_NORMAL) ? BKE_mesh_vertex_normals_ensure(mesh) : - NULL; + nullptr; if (index) { - for (int i = 0; i < mesh->totvert; i++, mv++) { + for (int i = 0; i < mesh->totvert; i++) { - const float *no = (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[i] : NULL; + const float *no = (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[i] : nullptr; const int orig = *index++; if (orig == ORIGINDEX_NONE) { continue; @@@ -82,9 -82,9 +82,9 @@@ } } else { - for (int i = 0; i < mesh->totvert; i++, mv++) { + for (int i = 0; i < mesh->totvert; i++) { - const float *no = (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[i] : NULL; + const float *no = (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[i] : nullptr; - func(userData, i, mv->co, no); + func(userData, i, positions[i], no); } } } @@@ -120,9 -120,9 +120,9 @@@ void BKE_mesh_foreach_mapped_edge } } else { - const MVert *mv = BKE_mesh_verts(mesh); + const float(*positions)[3] = BKE_mesh_positions(mesh); const MEdge *med = BKE_mesh_edges(mesh); - const int *index = CustomData_get_layer(&mesh->edata, CD_ORIGINDEX); + const int *index = static_cast<const int *>(CustomData_get_layer(&mesh->edata, CD_ORIGINDEX)); if (index) { for (int i = 0; i < mesh->totedge; i++, med++) { @@@ -185,14 -186,17 +186,17 @@@ void BKE_mesh_foreach_mapped_loop(Mesh } else { const float(*lnors)[3] = (flag & MESH_FOREACH_USE_NORMAL) ? - CustomData_get_layer(&mesh->ldata, CD_NORMAL) : - NULL; + static_cast<const float(*)[3]>( + CustomData_get_layer(&mesh->ldata, CD_NORMAL)) : + nullptr; - const MVert *mv = BKE_mesh_verts(mesh); + const float(*positions)[3] = BKE_mesh_positions(mesh); const MLoop *ml = BKE_mesh_loops(mesh); const MPoly *mp = BKE_mesh_polys(mesh); - const int *v_index = CustomData_get_layer(&mesh->vdata, CD_ORIGINDEX); - const int *f_index = CustomData_get_layer(&mesh->pdata, CD_ORIGINDEX); + const int *v_index = static_cast<const int *>( + CustomData_get_layer(&mesh->vdata, CD_ORIGINDEX)); + const int *f_index = static_cast<const int *>( + CustomData_get_layer(&mesh->pdata, CD_ORIGINDEX)); int p_idx, i; if (v_index || f_index) { @@@ -213,8 -217,8 +217,8 @@@ for (i = 0; i < mp->totloop; i++, ml++) { const int v_idx = ml->v; const int f_idx = p_idx; - const float *no = lnors ? *lnors++ : NULL; + const float *no = lnors ? *lnors++ : nullptr; - func(userData, v_idx, f_idx, mv[ml->v].co, no); + func(userData, v_idx, f_idx, positions[ml->v], no); } } } @@@ -308,12 -312,13 +312,12 @@@ void BKE_mesh_foreach_mapped_subdiv_fac const MPoly *mp = BKE_mesh_polys(mesh); const MLoop *loops = BKE_mesh_loops(mesh); const MLoop *ml; - const MVert *mv; const float(*vert_normals)[3] = (flag & MESH_FOREACH_USE_NORMAL) ? BKE_mesh_vertex_normals_ensure(mesh) : - NULL; - const int *index = CustomData_get_layer(&mesh->pdata, CD_ORIGINDEX); + nullptr; + const int *index = static_cast<const int *>(CustomData_get_layer(&mesh->pdata, CD_ORIGINDEX)); const BLI_bitmap *facedot_tags = mesh->runtime.subsurf_face_dot_tags; - BLI_assert(facedot_tags != NULL); + BLI_assert(facedot_tags != nullptr); if (index) { for (int i = 0; i < mesh->totpoly; i++, mp++) { @@@ -326,8 -331,9 +330,8 @@@ if (BLI_BITMAP_TEST(facedot_tags, ml->v)) { func(userData, orig, - mv->co, + positions[ml->v], - (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[ml->v] : NULL); + (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[ml->v] : nullptr); } } } @@@ -339,8 -345,9 +343,8 @@@ if (BLI_BITMAP_TEST(facedot_tags, ml->v)) { func(userData, i, - mv->co, + positions[ml->v], - (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[ml->v] : NULL); + (flag & MESH_FOREACH_USE_NORMAL) ? vert_normals[ml->v] : nullptr); } } } diff --cc source/blender/blenkernel/intern/pbvh.c index 5d90287959d,a7595952cac..7a16c6db796 --- a/source/blender/blenkernel/intern/pbvh.c +++ b/source/blender/blenkernel/intern/pbvh.c @@@ -513,6 -513,80 +513,80 @@@ static void pbvh_build(PBVH *pbvh, BB * build_sub(pbvh, 0, cb, prim_bbc, 0, totprim); } + static void pbvh_draw_args_init(PBVH *pbvh, PBVH_GPU_Args *args, PBVHNode *node) + { + memset((void *)args, 0, sizeof(*args)); + + args->pbvh_type = pbvh->header.type; + args->mesh_verts_num = pbvh->totvert; + args->mesh_grids_num = pbvh->totgrid; + args->node = node; + + BKE_pbvh_node_num_verts(pbvh, node, NULL, &args->node_verts_num); + + args->grid_hidden = pbvh->grid_hidden; + args->face_sets_color_default = pbvh->face_sets_color_default; + args->face_sets_color_seed = pbvh->face_sets_color_seed; - args->mvert = pbvh->verts; ++ args->mesh_positions = pbvh->mesh_positions; + args->mloop = pbvh->mloop; + args->mpoly = pbvh->mpoly; + args->mlooptri = pbvh->looptri; + + if (ELEM(pbvh->header.type, PBVH_FACES, PBVH_GRIDS)) { + args->hide_poly = pbvh->pdata ? + CustomData_get_layer_named(pbvh->pdata, CD_PROP_BOOL, ".hide_poly") : + NULL; + } + + switch (pbvh->header.type) { + case PBVH_FACES: + args->mesh_faces_num = pbvh->mesh->totpoly; + args->vdata = pbvh->vdata; + args->ldata = pbvh->ldata; + args->pdata = pbvh->pdata; + args->totprim = node->totprim; + args->me = pbvh->mesh; + args->mpoly = pbvh->mpoly; + args->vert_normals = pbvh->vert_normals; + + args->prim_indices = node->prim_indices; + args->face_sets = pbvh->face_sets; + break; + case PBVH_GRIDS: + args->vdata = pbvh->vdata; + args->ldata = pbvh->ldata; + args->pdata = pbvh->pdata; + args->ccg_key = pbvh->gridkey; + args->me = pbvh->mesh; + args->totprim = node->totprim; + args->grid_indices = node->prim_indices; + args->subdiv_ccg = pbvh->subdiv_ccg; + args->face_sets = pbvh->face_sets; + args->mpoly = @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs