Commit: 7172a11018d17886b0a715a0f5641903867f755e Author: Hans Goudey Date: Fri Jan 20 12:49:31 2023 -0600 Branches: refactor-mesh-corners-generic https://developer.blender.org/rB7172a11018d17886b0a715a0f5641903867f755e
Merge branch 'master' into refactor-mesh-corners-generic =================================================================== =================================================================== diff --cc source/blender/blenkernel/intern/multires_reshape_apply_base.cc index f4add2491bf,d491f30a1ad..8f7ca2142b4 --- a/source/blender/blenkernel/intern/multires_reshape_apply_base.cc +++ b/source/blender/blenkernel/intern/multires_reshape_apply_base.cc @@@ -119,13 -120,15 +118,14 @@@ void multires_reshape_apply_base_refit_ /* Set up poly, loops, and coords in order to call BKE_mesh_calc_poly_normal(). */ fake_poly.totloop = p->totloop; fake_poly.loopstart = 0; - int *poly_verts = MEM_malloc_arrayN(p->totloop, sizeof(int), __func__); - fake_co = MEM_malloc_arrayN(p->totloop, sizeof(float[3]), "fake_co"); - MLoop *fake_loops = static_cast<MLoop *>( - MEM_malloc_arrayN(p->totloop, sizeof(MLoop), __func__)); ++ int *poly_verts = static_cast<int *>(MEM_malloc_arrayN(p->totloop, sizeof(int), __func__)); + float(*fake_co)[3] = static_cast<float(*)[3]>( + MEM_malloc_arrayN(p->totloop, sizeof(float[3]), __func__)); for (int k = 0; k < p->totloop; k++) { - const int vndx = reshape_context->base_loops[p->loopstart + k].v; + const int vndx = reshape_context->base_corner_verts[p->loopstart + k]; - fake_loops[k].v = k; + poly_verts[k] = k; if (vndx == i) { copy_v3_v3(fake_co[k], center); diff --cc source/blender/blenkernel/intern/multires_reshape_subdivide.cc index 2b72103a31c,c65b78cb160..d502466e4d1 --- a/source/blender/blenkernel/intern/multires_reshape_subdivide.cc +++ b/source/blender/blenkernel/intern/multires_reshape_subdivide.cc @@@ -30,9 -30,10 +30,10 @@@ static void multires_subdivide_create_o { const float(*positions)[3] = BKE_mesh_vert_positions(mesh); const MPoly *polys = BKE_mesh_polys(mesh); - const MLoop *loops = BKE_mesh_loops(mesh); + const int *corner_verts = BKE_mesh_corner_verts(mesh); - MDisps *mdisps = CustomData_get_layer_for_write(&mesh->ldata, CD_MDISPS, mesh->totloop); + MDisps *mdisps = static_cast<MDisps *>( + CustomData_get_layer_for_write(&mesh->ldata, CD_MDISPS, mesh->totloop)); const int totpoly = mesh->totpoly; for (int p = 0; p < totpoly; p++) { const MPoly *poly = &polys[p]; diff --cc source/blender/blenkernel/intern/multires_reshape_util.cc index ce5bed1cecf,aa0fcbb7147..460446f52bf --- a/source/blender/blenkernel/intern/multires_reshape_util.cc +++ b/source/blender/blenkernel/intern/multires_reshape_util.cc @@@ -157,10 -158,9 +158,10 @@@ bool multires_reshape_context_create_fr reshape_context->base_positions = BKE_mesh_vert_positions(base_mesh); reshape_context->base_edges = BKE_mesh_edges(base_mesh); reshape_context->base_polys = BKE_mesh_polys(base_mesh); - reshape_context->base_loops = BKE_mesh_loops(base_mesh); + reshape_context->base_corner_verts = BKE_mesh_corner_verts(base_mesh); + reshape_context->base_corner_edges = BKE_mesh_corner_edges(base_mesh); - reshape_context->subdiv = multires_reshape_create_subdiv(NULL, object, mmd); + reshape_context->subdiv = multires_reshape_create_subdiv(nullptr, object, mmd); reshape_context->need_free_subdiv = true; reshape_context->reshape.level = multires_get_level( diff --cc source/blender/blenkernel/intern/pbvh_pixels.cc index 39301d43eea,b1d635f566e..14a169c84ee --- a/source/blender/blenkernel/intern/pbvh_pixels.cc +++ b/source/blender/blenkernel/intern/pbvh_pixels.cc @@@ -366,7 -366,11 +366,11 @@@ static void update_pixels(PBVH *pbvh, M const VArraySpan<float2> uv_map = attributes.lookup<float2>(active_uv_name, ATTR_DOMAIN_CORNER); uv_islands::MeshData mesh_data( - {pbvh->looptri, pbvh->totprim}, {pbvh->corner_verts, mesh->totloop}, pbvh->totvert, uv_map); + {pbvh->looptri, pbvh->totprim}, - {pbvh->mloop, mesh->totloop}, ++ {pbvh->corner_verts, mesh->totloop}, + pbvh->totvert, + uv_map, + {static_cast<blender::float3 *>(static_cast<void *>(pbvh->vert_positions)), pbvh->totvert}); uv_islands::UVIslands islands(mesh_data); uv_islands::UVIslandsMask uv_masks; diff --cc source/blender/blenkernel/intern/pbvh_uv_islands.cc index 7374631c2ff,16091b32917..bf40bdbd475 --- a/source/blender/blenkernel/intern/pbvh_uv_islands.cc +++ b/source/blender/blenkernel/intern/pbvh_uv_islands.cc @@@ -208,13 -208,15 +208,15 @@@ static void mesh_data_init(MeshData &me } MeshData::MeshData(const Span<MLoopTri> looptris, - const Span<MLoop> loops, + const Span<int> corner_verts, const int verts_num, - const Span<float2> uv_map) + const Span<float2> uv_map, + const Span<float3> vertex_positions) : looptris(looptris), verts_num(verts_num), - loops(loops), + corner_verts(corner_verts), uv_map(uv_map), + vertex_positions(vertex_positions), vert_to_edge_map(verts_num), edge_to_primitive_map(0), primitive_to_edge_map(looptris.size()) diff --cc source/blender/blenkernel/intern/pbvh_uv_islands.hh index 5cebac81abe,c1a0a4da5d8..91181a78c3f --- a/source/blender/blenkernel/intern/pbvh_uv_islands.hh +++ b/source/blender/blenkernel/intern/pbvh_uv_islands.hh @@@ -120,8 -120,9 +120,9 @@@ struct MeshData public: const Span<MLoopTri> looptris; const int64_t verts_num; - const Span<MLoop> loops; + const Span<int> corner_verts; const Span<float2> uv_map; + const Span<float3> vertex_positions; VertToEdgeMap vert_to_edge_map; @@@ -140,9 -141,10 +141,10 @@@ public: explicit MeshData(Span<MLoopTri> looptris, - Span<MLoop> loops, + const Span<int> corner_verts, const int verts_num, - const Span<float2> uv_map); + const Span<float2> uv_map, + const Span<float3> vertex_positions); }; struct UVVertex { diff --cc source/blender/blenkernel/intern/subdiv_converter_mesh.cc index 4b57d5ab64b,05fa391dcaa..6da760b1c17 --- a/source/blender/blenkernel/intern/subdiv_converter_mesh.cc +++ b/source/blender/blenkernel/intern/subdiv_converter_mesh.cc @@@ -132,11 -133,12 +134,11 @@@ static void get_face_vertices(const Ope int manifold_face_index, int *manifold_face_vertices) { - ConverterStorage *storage = converter->user_data; + ConverterStorage *storage = static_cast<ConverterStorage *>(converter->user_data); const MPoly *poly = &storage->polys[manifold_face_index]; - const MLoop *mloop = storage->loops; - for (int corner = 0; corner < poly->totloop; corner++) { - manifold_face_vertices[corner] = - storage->manifold_vertex_index[mloop[poly->loopstart + corner].v]; + for (int i = 0; i < poly->totloop; i++) { + const int vert = storage->corner_verts[poly->loopstart + i]; + manifold_face_vertices[i] = storage->manifold_vertex_index[vert]; } } @@@ -397,10 -403,11 +402,12 @@@ static void init_user_data(OpenSubdiv_C user_data->vert_positions = BKE_mesh_vert_positions(mesh); user_data->edges = BKE_mesh_edges(mesh); user_data->polys = BKE_mesh_polys(mesh); - user_data->loops = BKE_mesh_loops(mesh); + user_data->corner_verts = BKE_mesh_corner_verts(mesh); + user_data->corner_edges = BKE_mesh_corner_edges(mesh); - user_data->cd_vertex_crease = CustomData_get_layer(&mesh->vdata, CD_CREASE); - user_data->cd_edge_crease = CustomData_get_layer(&mesh->edata, CD_CREASE); + user_data->cd_vertex_crease = static_cast<const float *>( + CustomData_get_layer(&mesh->vdata, CD_CREASE)); + user_data->cd_edge_crease = static_cast<const float *>( + CustomData_get_layer(&mesh->edata, CD_CREASE)); user_data->loop_uv_indices = NULL; initialize_manifold_indices(user_data); converter->user_data = user_data; diff --cc source/blender/blenkernel/intern/subsurf_ccg.cc index 12e8a3e1963,a7342bb93b0..3ddec496020 --- a/source/blender/blenkernel/intern/subsurf_ccg.cc +++ b/source/blender/blenkernel/intern/subsurf_ccg.cc @@@ -49,13 -43,9 +43,9 @@@ #include "BKE_scene.h" #include "BKE_subsurf.h" - #ifndef USE_DYNSIZE - # include "BLI_array.h" - #endif - #include "CCGSubSurf.h" -/* assumes MLoop's are laid out 4 for each poly, in order */ +/* assumes corners are laid out 4 for each poly, in order */ #define USE_LOOP_LAYOUT_FAST static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, @@@ -240,7 -231,7 +231,7 @@@ static int getFaceIndex } static void get_face_uv_map_vert( - UvVertMap *vmap, struct MPoly *mpoly, int *poly_verts, int fi, CCGVertHDL *fverts) - UvVertMap *vmap, MPoly *mpoly, MLoop *ml, int fi, CCGVertHDL *fverts) ++ UvVertMap *vmap, MPoly *mpoly, int *poly_verts, int fi, CCGVertHDL *fverts) { UvMapVert *v, *nv; int j, nverts = mpoly[fi].totloop; @@@ -285,7 -273,7 +273,7 @@@ static int ss_sync_from_uv(CCGSubSurf * * Also, initially intention is to treat merged vertices from mirror modifier as seams. * This fixes a very old regression (2.49 was correct here) */ vmap = BKE_mesh_uv_vert_map_create( - mpoly, NULL, NULL, corner_verts, mloopuv, totface, totvert, limit, false, true); - mpoly, nullptr, nullptr, mloop, mloopuv, totface, totvert, limit, false, true); ++ mpoly, nullptr, nullptr, corner_verts, mloopuv, totface, totvert, limit, false, true); if (!vmap) { return 0; } @@@ -328,15 -316,11 +316,10 @@@ int j, j_next; CCGFace *origf = ccgSubSurf_getFace(origss, POINTER_FROM_INT(i)); /* uint *fv = &mp->v1; */ - MLoop *ml = mloop + mp->loopstart; - #ifdef USE_DYNSIZE - CCGVertHDL fverts[nverts]; - #else - BLI_array_clear(fverts); - BLI_array_grow_items(fverts, nverts); - #endif + fverts.reinitialize(nverts); - get_face_uv_map_vert(vmap, mpoly, &corner_verts[mp->loopstart], i, fverts); - get_face_uv_map_vert(vmap, mpoly, ml, i, fverts.data()); ++ get_face_uv_map_vert(vmap, mpoly, &corner_verts[mp->loopstart], i, fverts.data()); for (j = 0, j_next = nverts - 1; j < nverts; j_next = j++) { uint v0 = POINTER_AS_UINT(fverts[j @@ 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