[Bf-blender-cvs] [6873aabf93e] master: Cleanup: BVH utils: Remove print, use spans instead of pointers
Hans Goudey
noreply at git.blender.org
Mon Nov 14 18:59:47 CET 2022
Commit: 6873aabf93e7498fab05b2190095ba55e028d1a3
Author: Hans Goudey
Date: Mon Nov 14 11:59:31 2022 -0600
Branches: master
https://developer.blender.org/rB6873aabf93e7498fab05b2190095ba55e028d1a3
Cleanup: BVH utils: Remove print, use spans instead of pointers
===================================================================
M source/blender/blenkernel/intern/bvhutils.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc
index 1f4bffbaa2d..3d43558a673 100644
--- a/source/blender/blenkernel/intern/bvhutils.cc
+++ b/source/blender/blenkernel/intern/bvhutils.cc
@@ -30,6 +30,7 @@
#include "MEM_guardedalloc.h"
using blender::BitVector;
+using blender::IndexRange;
using blender::Span;
using blender::VArray;
@@ -1134,23 +1135,21 @@ BVHTree *bvhtree_from_mesh_looptri_ex(BVHTreeFromMesh *data,
return tree;
}
-static BitVector<> loose_verts_map_get(const MEdge *medge,
- int edges_num,
- const MVert * /*mvert*/,
+static BitVector<> loose_verts_map_get(const Span<MEdge> edges,
int verts_num,
int *r_loose_vert_num)
{
BitVector<> loose_verts_mask(verts_num, true);
- const MEdge *e = medge;
int num_linked_verts = 0;
- for (; edges_num--; e++) {
- if (loose_verts_mask[e->v1]) {
- loose_verts_mask[e->v1].reset();
+ for (const int64_t i : edges.index_range()) {
+ const MEdge &edge = edges[i];
+ if (loose_verts_mask[edge.v1]) {
+ loose_verts_mask[edge.v1].reset();
num_linked_verts++;
}
- if (loose_verts_mask[e->v2]) {
- loose_verts_mask[e->v2].reset();
+ if (loose_verts_mask[edge.v2]) {
+ loose_verts_mask[edge.v2].reset();
num_linked_verts++;
}
}
@@ -1160,16 +1159,14 @@ static BitVector<> loose_verts_map_get(const MEdge *medge,
return loose_verts_mask;
}
-static BitVector<> loose_edges_map_get(const MEdge *medge,
- const int edges_len,
- int *r_loose_edge_len)
+static BitVector<> loose_edges_map_get(const Span<MEdge> edges, int *r_loose_edge_len)
{
- BitVector<> loose_edges_mask(edges_len);
+ BitVector<> loose_edges_mask(edges.size());
int loose_edges_len = 0;
- const MEdge *e = medge;
- for (int i = 0; i < edges_len; i++, e++) {
- if (e->flag & ME_LOOSEEDGE) {
+ for (const int64_t i : edges.index_range()) {
+ const MEdge &edge = edges[i];
+ if (edge.flag & ME_LOOSEEDGE) {
loose_edges_mask[i].set();
loose_edges_len++;
}
@@ -1180,7 +1177,7 @@ static BitVector<> loose_edges_map_get(const MEdge *medge,
return loose_edges_mask;
}
-static BitVector<> looptri_no_hidden_map_get(const MPoly *mpoly,
+static BitVector<> looptri_no_hidden_map_get(const Span<MPoly> polys,
const VArray<bool> &hide_poly,
const int looptri_len,
int *r_looptri_active_len)
@@ -1191,21 +1188,19 @@ static BitVector<> looptri_no_hidden_map_get(const MPoly *mpoly,
BitVector<> looptri_mask(looptri_len);
int looptri_no_hidden_len = 0;
- int looptri_iter = 0;
- int i_poly = 0;
- while (looptri_iter != looptri_len) {
- int mp_totlooptri = mpoly[i_poly].totloop - 2;
- if (hide_poly[i_poly]) {
- looptri_iter += mp_totlooptri;
+ int looptri_index = 0;
+ for (const int64_t i : polys.index_range()) {
+ const int triangles_num = ME_POLY_TRI_TOT(&polys[i]);
+ if (hide_poly[i]) {
+ looptri_index += triangles_num;
}
else {
- while (mp_totlooptri--) {
- looptri_mask[looptri_iter].set();
- looptri_iter++;
+ for (const int i : IndexRange(triangles_num)) {
+ looptri_mask[looptri_index].set();
+ looptri_index++;
looptri_no_hidden_len++;
}
}
- i_poly++;
}
*r_looptri_active_len = looptri_no_hidden_len;
@@ -1231,17 +1226,15 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
const Span<MLoop> loops = mesh->loops();
/* Setup BVHTreeFromMesh */
- {
- SCOPED_TIMER_AVERAGED(__func__);
- bvhtree_from_mesh_setup_data(nullptr,
- bvh_cache_type,
- verts.data(),
- edges.data(),
- (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE),
- loops.data(),
- looptri,
- data);
- }
+ bvhtree_from_mesh_setup_data(nullptr,
+ bvh_cache_type,
+ verts.data(),
+ edges.data(),
+ (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE),
+ loops.data(),
+ looptri,
+ data);
+
bool lock_started = false;
data->cached = bvhcache_find(
bvh_cache_p, bvh_cache_type, &data->tree, &lock_started, &mesh->runtime->eval_mutex);
@@ -1259,8 +1252,7 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
switch (bvh_cache_type) {
case BVHTREE_FROM_LOOSEVERTS:
- mask = loose_verts_map_get(
- edges.data(), mesh->totedge, verts.data(), mesh->totvert, &mask_bits_act_len);
+ mask = loose_verts_map_get(edges, mesh->totvert, &mask_bits_act_len);
ATTR_FALLTHROUGH;
case BVHTREE_FROM_VERTS:
data->tree = bvhtree_from_mesh_verts_create_tree(
@@ -1268,7 +1260,7 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
break;
case BVHTREE_FROM_LOOSEEDGES:
- mask = loose_edges_map_get(edges.data(), mesh->totedge, &mask_bits_act_len);
+ mask = loose_edges_map_get(edges, &mask_bits_act_len);
ATTR_FALLTHROUGH;
case BVHTREE_FROM_EDGES:
data->tree = bvhtree_from_mesh_edges_create_tree(
@@ -1291,7 +1283,7 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
case BVHTREE_FROM_LOOPTRI_NO_HIDDEN: {
blender::bke::AttributeAccessor attributes = mesh->attributes();
mask = looptri_no_hidden_map_get(
- mesh->polys().data(),
+ mesh->polys(),
attributes.lookup_or_default(".hide_poly", ATTR_DOMAIN_FACE, false),
looptri_len,
&mask_bits_act_len);
More information about the Bf-blender-cvs
mailing list