diff options
author | Erik Abrahamsson <ecke101@gmail.com> | 2022-08-07 21:09:20 +0300 |
---|---|---|
committer | Erik Abrahamsson <ecke101@gmail.com> | 2022-08-07 21:09:20 +0300 |
commit | 341e9f7a7c422f13211d514d529e3df764337385 (patch) | |
tree | 1822469605f7e04ad02e05149d64e8acd3823bca /source/blender/blenkernel/intern/mesh_remesh_voxel.cc | |
parent | e2079303503cecb2a2404117214ffba3e5906323 (diff) |
Revert "Parallelize remesh reprojects"
This reverts commit 34009dfb2390f6084fc6d782309e0d7a4210f262.
This was committed by accident an does not belong in master.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_remesh_voxel.cc')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_remesh_voxel.cc | 168 |
1 files changed, 77 insertions, 91 deletions
diff --git a/source/blender/blenkernel/intern/mesh_remesh_voxel.cc b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc index 2fa11834818..85aed01ce52 100644 --- a/source/blender/blenkernel/intern/mesh_remesh_voxel.cc +++ b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc @@ -19,7 +19,6 @@ #include "BLI_math_vec_types.hh" #include "BLI_math_vector.h" #include "BLI_span.hh" -#include "BLI_task.hh" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" @@ -300,20 +299,17 @@ void BKE_mesh_remesh_reproject_paint_mask(Mesh *target, Mesh *source) &source->vdata, CD_PAINT_MASK, CD_CALLOC, nullptr, source->totvert); } - blender::threading::parallel_for(IndexRange(target->totvert), 4096, [&](const IndexRange range) { - for (const int i : range) { - float from_co[3]; - BVHTreeNearest nearest; - nearest.index = -1; - nearest.dist_sq = FLT_MAX; - copy_v3_v3(from_co, target_verts[i].co); - BLI_bvhtree_find_nearest( - bvhtree.tree, from_co, &nearest, bvhtree.nearest_callback, &bvhtree); - if (nearest.index != -1) { - target_mask[i] = source_mask[nearest.index]; - } + for (int i = 0; i < target->totvert; i++) { + float from_co[3]; + BVHTreeNearest nearest; + nearest.index = -1; + nearest.dist_sq = FLT_MAX; + copy_v3_v3(from_co, target_verts[i].co); + BLI_bvhtree_find_nearest(bvhtree.tree, from_co, &nearest, bvhtree.nearest_callback, &bvhtree); + if (nearest.index != -1) { + target_mask[i] = source_mask[nearest.index]; } - }); + } free_bvhtree_from_mesh(&bvhtree); } @@ -346,24 +342,21 @@ void BKE_remesh_reproject_sculpt_face_sets(Mesh *target, Mesh *source) const MLoopTri *looptri = BKE_mesh_runtime_looptri_ensure(source); BKE_bvhtree_from_mesh_get(&bvhtree, source, BVHTREE_FROM_LOOPTRI, 2); - blender::threading::parallel_for(IndexRange(target->totpoly), 2048, [&](const IndexRange range) { - for (const int i : range) { - float from_co[3]; - BVHTreeNearest nearest; - nearest.index = -1; - nearest.dist_sq = FLT_MAX; - const MPoly *mpoly = &target_polys[i]; - BKE_mesh_calc_poly_center(mpoly, &target_loops[mpoly->loopstart], target_verts, from_co); - BLI_bvhtree_find_nearest( - bvhtree.tree, from_co, &nearest, bvhtree.nearest_callback, &bvhtree); - if (nearest.index != -1) { - target_face_sets[i] = source_face_sets[looptri[nearest.index].poly]; - } - else { - target_face_sets[i] = 1; - } + for (int i = 0; i < target->totpoly; i++) { + float from_co[3]; + BVHTreeNearest nearest; + nearest.index = -1; + nearest.dist_sq = FLT_MAX; + const MPoly *mpoly = &target_polys[i]; + BKE_mesh_calc_poly_center(mpoly, &target_loops[mpoly->loopstart], target_verts, from_co); + BLI_bvhtree_find_nearest(bvhtree.tree, from_co, &nearest, bvhtree.nearest_callback, &bvhtree); + if (nearest.index != -1) { + target_face_sets[i] = source_face_sets[looptri[nearest.index].poly]; } - }); + else { + target_face_sets[i] = 1; + } + } free_bvhtree_from_mesh(&bvhtree); } @@ -403,22 +396,19 @@ void BKE_remesh_reproject_vertex_paint(Mesh *target, const Mesh *source) MVert *target_verts = (MVert *)CustomData_get_layer(&target->vdata, CD_MVERT); if (domain == ATTR_DOMAIN_POINT) { - blender::threading::parallel_for( - IndexRange(target->totvert), 4096, [&](const IndexRange range) { - for (const int i : range) { - BVHTreeNearest nearest; - nearest.index = -1; - nearest.dist_sq = FLT_MAX; - BLI_bvhtree_find_nearest( - bvhtree.tree, target_verts[i].co, &nearest, bvhtree.nearest_callback, &bvhtree); - - if (nearest.index != -1) { - memcpy(POINTER_OFFSET(target_data, (size_t)i * data_size), - POINTER_OFFSET(source_data, (size_t)nearest.index * data_size), - data_size); - } - } - }); + for (int i = 0; i < target->totvert; i++) { + BVHTreeNearest nearest; + nearest.index = -1; + nearest.dist_sq = FLT_MAX; + BLI_bvhtree_find_nearest( + bvhtree.tree, target_verts[i].co, &nearest, bvhtree.nearest_callback, &bvhtree); + + if (nearest.index != -1) { + memcpy(POINTER_OFFSET(target_data, (size_t)i * data_size), + POINTER_OFFSET(source_data, (size_t)nearest.index * data_size), + data_size); + } + } } else { /* Lazily init vertex -> loop maps. */ @@ -445,50 +435,46 @@ void BKE_remesh_reproject_vertex_paint(Mesh *target, const Mesh *source) target->totloop); } - blender::threading::parallel_for( - IndexRange(target->totvert), 2048, [&](const IndexRange range) { - for (const int i : range) { - BVHTreeNearest nearest; - nearest.index = -1; - nearest.dist_sq = FLT_MAX; - BLI_bvhtree_find_nearest( - bvhtree.tree, target_verts[i].co, &nearest, bvhtree.nearest_callback, &bvhtree); - - if (nearest.index == -1) { - continue; - } - - MeshElemMap *source_loops = source_lmap + nearest.index; - MeshElemMap *target_loops = target_lmap + i; - - if (target_loops->count == 0 || source_loops->count == 0) { - continue; - } - - /* - * Average color data for loops around the source vertex into - * the first target loop around the target vertex - */ - - CustomData_interp(source_cdata, - target_cdata, - source_loops->indices, - nullptr, - nullptr, - source_loops->count, - target_loops->indices[0]); - - void *elem = POINTER_OFFSET(target_data, - (size_t)target_loops->indices[0] * data_size); - - /* Copy to rest of target loops. */ - for (int j = 1; j < target_loops->count; j++) { - memcpy(POINTER_OFFSET(target_data, (size_t)target_loops->indices[j] * data_size), - elem, - data_size); - } - } - }); + for (int i = 0; i < target->totvert; i++) { + BVHTreeNearest nearest; + nearest.index = -1; + nearest.dist_sq = FLT_MAX; + BLI_bvhtree_find_nearest( + bvhtree.tree, target_verts[i].co, &nearest, bvhtree.nearest_callback, &bvhtree); + + if (nearest.index == -1) { + continue; + } + + MeshElemMap *source_loops = source_lmap + nearest.index; + MeshElemMap *target_loops = target_lmap + i; + + if (target_loops->count == 0 || source_loops->count == 0) { + continue; + } + + /* + * Average color data for loops around the source vertex into + * the first target loop around the target vertex + */ + + CustomData_interp(source_cdata, + target_cdata, + source_loops->indices, + nullptr, + nullptr, + source_loops->count, + target_loops->indices[0]); + + void *elem = POINTER_OFFSET(target_data, (size_t)target_loops->indices[0] * data_size); + + /* Copy to rest of target loops. */ + for (int j = 1; j < target_loops->count; j++) { + memcpy(POINTER_OFFSET(target_data, (size_t)target_loops->indices[j] * data_size), + elem, + data_size); + } + } } } |