[Bf-blender-cvs] [bce071b861c] refactor-mesh-hide-generic: Cleanups and fixes
Hans Goudey
noreply at git.blender.org
Tue May 31 18:22:28 CEST 2022
Commit: bce071b861cb4a02e331010b1e70cf94994fc492
Author: Hans Goudey
Date: Tue May 31 18:22:25 2022 +0200
Branches: refactor-mesh-hide-generic
https://developer.blender.org/rBbce071b861cb4a02e331010b1e70cf94994fc492
Cleanups and fixes
===================================================================
M source/blender/blenkernel/intern/bvhutils.cc
M source/blender/blenkernel/intern/mesh_evaluate.cc
M source/blender/blenkernel/intern/pbvh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc
index 33d6e10571c..619fdeb8d03 100644
--- a/source/blender/blenkernel/intern/bvhutils.cc
+++ b/source/blender/blenkernel/intern/bvhutils.cc
@@ -22,11 +22,14 @@
#include "BKE_bvhutils.h"
#include "BKE_customdata.h"
#include "BKE_editmesh.h"
+#include "BKE_geometry_set.hh"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.h"
#include "MEM_guardedalloc.h"
+using blender::VArray;
+
/* -------------------------------------------------------------------- */
/** \name BVHCache
* \{ */
@@ -1181,11 +1184,11 @@ static BLI_bitmap *loose_edges_map_get(const MEdge *medge,
}
static BLI_bitmap *looptri_no_hidden_map_get(const MPoly *mpoly,
- const bool *face_hide,
+ const VArray<bool> &face_hide,
const int looptri_len,
int *r_looptri_active_len)
{
- if (face_hide == nullptr) {
+ if (face_hide.is_single() && !face_hide.get_internal_single()) {
return nullptr;
}
BLI_bitmap *looptri_mask = BLI_BITMAP_NEW(looptri_len, __func__);
@@ -1279,13 +1282,17 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
0.0f, tree_type, 6, mesh->mvert, mesh->mface, mesh->totface, nullptr, -1);
break;
- case BVHTREE_FROM_LOOPTRI_NO_HIDDEN:
+ case BVHTREE_FROM_LOOPTRI_NO_HIDDEN: {
+ MeshComponent component;
+ component.replace(const_cast<Mesh *>(mesh), GeometryOwnershipType::ReadOnly);
+
mask = looptri_no_hidden_map_get(
mesh->mpoly,
- (const bool *)CustomData_get_layer_named(&mesh->pdata, CD_PROP_BOOL, ".face_hide"),
+ component.attribute_get_for_read<bool>(".face_hide", ATTR_DOMAIN_FACE, false),
looptri_len,
&mask_bits_act_len);
ATTR_FALLTHROUGH;
+ }
case BVHTREE_FROM_LOOPTRI:
data->tree = bvhtree_from_mesh_looptri_create_tree(0.0f,
tree_type,
diff --git a/source/blender/blenkernel/intern/mesh_evaluate.cc b/source/blender/blenkernel/intern/mesh_evaluate.cc
index fb4ba992c21..842bcc72450 100644
--- a/source/blender/blenkernel/intern/mesh_evaluate.cc
+++ b/source/blender/blenkernel/intern/mesh_evaluate.cc
@@ -1040,7 +1040,7 @@ void BKE_mesh_flush_hidden_from_polys(Mesh *me)
const VArray<bool> face_hide = component.attribute_get_for_read<bool>(
".face_hide", ATTR_DOMAIN_FACE, false);
- if (face_hide.is_single() && face_hide.get_internal_single()) {
+ if (face_hide.is_single() && !face_hide.get_internal_single()) {
component.attribute_try_delete(".vert_hide");
component.attribute_try_delete(".edge_hide");
return;
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index dea6a9a0404..8345f493f46 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -3155,6 +3155,10 @@ bool *BKE_pbvh_get_vert_hide_for_write(PBVH *pbvh)
if (pbvh->vert_hide) {
return pbvh->vert_hide;
}
+ pbvh->vert_hide = CustomData_get_layer_named(&pbvh->mesh->vdata, CD_PROP_BOOL, ".vert_hide");
+ if (pbvh->vert_hide) {
+ return pbvh->vert_hide;
+ }
pbvh->vert_hide = (bool *)CustomData_add_layer_named(
&pbvh->mesh->vdata, CD_PROP_BOOL, CD_CALLOC, NULL, pbvh->mesh->totvert, ".vert_hide");
return pbvh->vert_hide;
More information about the Bf-blender-cvs
mailing list