Merge branch 'blender-v3.2-release'
This commit is contained in:
commit
1d65f7ea91
|
@ -244,8 +244,8 @@ static int map_insert_vert(
|
|||
key = POINTER_FROM_INT(vertex);
|
||||
if (!BLI_ghash_ensure_p(map, key, &value_p)) {
|
||||
int value_i;
|
||||
if (BLI_BITMAP_TEST(pbvh->vert_bitmap, vertex) == 0) {
|
||||
BLI_BITMAP_ENABLE(pbvh->vert_bitmap, vertex);
|
||||
if (!pbvh->vert_bitmap[vertex]) {
|
||||
pbvh->vert_bitmap[vertex] = true;
|
||||
value_i = *uniq_verts;
|
||||
(*uniq_verts)++;
|
||||
}
|
||||
|
@ -562,7 +562,7 @@ void BKE_pbvh_build_mesh(PBVH *pbvh,
|
|||
pbvh->verts = verts;
|
||||
BKE_mesh_vertex_normals_ensure(mesh);
|
||||
pbvh->vert_normals = BKE_mesh_vertex_normals_for_write(mesh);
|
||||
pbvh->vert_bitmap = BLI_BITMAP_NEW(totvert, "bvh->vert_bitmap");
|
||||
pbvh->vert_bitmap = MEM_calloc_arrayN(totvert, sizeof(bool), "bvh->vert_bitmap");
|
||||
pbvh->totvert = totvert;
|
||||
pbvh->leaf_limit = LEAF_LIMIT;
|
||||
pbvh->vdata = vdata;
|
||||
|
@ -600,7 +600,7 @@ void BKE_pbvh_build_mesh(PBVH *pbvh,
|
|||
MEM_freeN(prim_bbc);
|
||||
|
||||
/* Clear the bitmap so it can be used as an update tag later on. */
|
||||
BLI_bitmap_set_all(pbvh->vert_bitmap, false, totvert);
|
||||
memset(pbvh->vert_bitmap, 0, sizeof(bool) * totvert);
|
||||
|
||||
BKE_pbvh_update_active_vcol(pbvh, mesh);
|
||||
}
|
||||
|
@ -1021,7 +1021,7 @@ static void pbvh_update_normals_clear_task_cb(void *__restrict userdata,
|
|||
const int totvert = node->uniq_verts;
|
||||
for (int i = 0; i < totvert; i++) {
|
||||
const int v = verts[i];
|
||||
if (BLI_BITMAP_TEST(pbvh->vert_bitmap, v)) {
|
||||
if (pbvh->vert_bitmap[v]) {
|
||||
zero_v3(vnors[v]);
|
||||
}
|
||||
}
|
||||
|
@ -1064,7 +1064,7 @@ static void pbvh_update_normals_accum_task_cb(void *__restrict userdata,
|
|||
for (int j = sides; j--;) {
|
||||
const int v = vtri[j];
|
||||
|
||||
if (BLI_BITMAP_TEST(pbvh->vert_bitmap, v)) {
|
||||
if (pbvh->vert_bitmap[v]) {
|
||||
/* NOTE: This avoids `lock, add_v3_v3, unlock`
|
||||
* and is five to ten times quicker than a spin-lock.
|
||||
* Not exact equivalent though, since atomicity is only ensured for one component
|
||||
|
@ -1096,9 +1096,9 @@ static void pbvh_update_normals_store_task_cb(void *__restrict userdata,
|
|||
|
||||
/* No atomics necessary because we are iterating over uniq_verts only,
|
||||
* so we know only this thread will handle this vertex. */
|
||||
if (BLI_BITMAP_TEST(pbvh->vert_bitmap, v)) {
|
||||
if (pbvh->vert_bitmap[v]) {
|
||||
normalize_v3(vnors[v]);
|
||||
BLI_BITMAP_DISABLE(pbvh->vert_bitmap, v);
|
||||
pbvh->vert_bitmap[v] = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1879,7 +1879,7 @@ bool BKE_pbvh_node_fully_unmasked_get(PBVHNode *node)
|
|||
void BKE_pbvh_vert_mark_update(PBVH *pbvh, int index)
|
||||
{
|
||||
BLI_assert(pbvh->type == PBVH_FACES);
|
||||
BLI_BITMAP_ENABLE(pbvh->vert_bitmap, index);
|
||||
pbvh->vert_bitmap[index] = true;
|
||||
}
|
||||
|
||||
void BKE_pbvh_node_get_loops(PBVH *pbvh,
|
||||
|
@ -2044,7 +2044,7 @@ bool BKE_pbvh_node_vert_update_check_any(PBVH *pbvh, PBVHNode *node)
|
|||
for (int i = 0; i < totvert; i++) {
|
||||
const int v = verts[i];
|
||||
|
||||
if (BLI_BITMAP_TEST(pbvh->vert_bitmap, v)) {
|
||||
if (pbvh->vert_bitmap[v]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -170,7 +170,7 @@ struct PBVH {
|
|||
|
||||
/* Used during BVH build and later to mark that a vertex needs to update
|
||||
* (its normal must be recalculated). */
|
||||
BLI_bitmap *vert_bitmap;
|
||||
bool *vert_bitmap;
|
||||
|
||||
#ifdef PERFCNTRS
|
||||
int perf_modified;
|
||||
|
|
Loading…
Reference in New Issue