[Bf-blender-cvs] [dc027bd8a32] sculpt-dev: Sculpt-dev: Finish fixing merge errors
Joseph Eagar
noreply at git.blender.org
Sun Sep 25 18:43:45 CEST 2022
Commit: dc027bd8a327da00e38dca1111d125ad772bf098
Author: Joseph Eagar
Date: Sun Sep 25 09:43:31 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rBdc027bd8a327da00e38dca1111d125ad772bf098
Sculpt-dev: Finish fixing merge errors
===================================================================
M source/blender/blenkernel/BKE_bassrelief.h
M source/blender/blenkernel/BKE_pbvh.h
M source/blender/blenkernel/intern/bassrelief.cc
M source/blender/blenkernel/intern/customdata.cc
M source/blender/blenkernel/intern/dyntopo.c
M source/blender/blenkernel/intern/mesh_legacy_convert.cc
M source/blender/blenkernel/intern/mesh_tangent.cc
M source/blender/blenkernel/intern/paint.cc
M source/blender/blenkernel/intern/pbvh.c
M source/blender/blenkernel/intern/pbvh_bmesh.c
M source/blender/bmesh/intern/bmesh_core.c
M source/blender/editors/mesh/editmesh_utils.c
M source/blender/editors/object/object_edit.c
M source/blender/editors/sculpt_paint/sculpt.c
M source/blender/editors/sculpt_paint/sculpt_brush_types.c
M source/blender/editors/sculpt_paint/sculpt_dyntopo.c
M source/blender/editors/sculpt_paint/sculpt_face_set.cc
M source/blender/editors/sculpt_paint/sculpt_ops.c
M source/blender/editors/sculpt_paint/sculpt_smooth.c
M source/blender/editors/sculpt_paint/sculpt_undo.c
M source/blender/modifiers/intern/MOD_bassrelief.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_bassrelief.h b/source/blender/blenkernel/BKE_bassrelief.h
index c116f584404..e3dbc21df65 100644
--- a/source/blender/blenkernel/BKE_bassrelief.h
+++ b/source/blender/blenkernel/BKE_bassrelief.h
@@ -43,6 +43,7 @@ extern "C" {
/* Information about a mesh and BVH tree. */
typedef struct BassReliefTreeData {
Mesh *mesh;
+ const MPoly *mpoly;
BVHTree *bvh;
BVHTreeFromMesh treeData;
diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h
index 2104d017232..8e184209809 100644
--- a/source/blender/blenkernel/BKE_pbvh.h
+++ b/source/blender/blenkernel/BKE_pbvh.h
@@ -88,6 +88,8 @@ typedef struct PBVHTriBuf {
float min[3], max[3];
} PBVHTriBuf;
+//#define WITH_PBVH_CACHE
+
struct BMLog;
struct BMesh;
struct BMVert;
@@ -1146,6 +1148,7 @@ int BKE_pbvh_do_fset_symmetry(int fset, const int symflag, const float *co);
bool BKE_pbvh_check_vert_boundary(PBVH *pbvh, struct BMVert *v);
void BKE_pbvh_update_vert_boundary_faces(const int *face_sets,
+ const bool *hide_poly,
const struct MVert *mvert,
const struct MEdge *medge,
const struct MLoop *mloop,
@@ -1267,10 +1270,14 @@ bool BKE_pbvh_cache_is_valid(const struct Object *ob,
const struct Mesh *me,
const PBVH *pbvh,
int pbvh_type);
+
+#ifdef WITH_PBVH_CACHE
bool BKE_pbvh_cache(const struct Mesh *me, PBVH *pbvh);
PBVH *BKE_pbvh_get_or_free_cached(struct Object *ob, struct Mesh *me, PBVHType pbvh_type);
void BKE_pbvh_invalidate_cache(struct Object *ob);
void BKE_pbvh_set_cached(struct Object *ob, PBVH *pbvh);
+#endif
+
void BKE_pbvh_set_face_areas(PBVH *pbvh, float *face_areas);
void BKE_pbvh_set_sculpt_verts(PBVH *pbvh, struct MSculptVert *sverts);
void BKE_pbvh_set_pmap(PBVH *pbvh, SculptPMap *pmap);
@@ -1287,6 +1294,7 @@ bool BKE_pbvh_pmap_release(SculptPMap *pmap);
void BKE_pbvh_clear_cache(PBVH *preserve);
void BKE_pbvh_need_full_render_set(PBVH *pbvh, bool state);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/intern/bassrelief.cc b/source/blender/blenkernel/intern/bassrelief.cc
index 3c70f147521..73e6dd843c5 100644
--- a/source/blender/blenkernel/intern/bassrelief.cc
+++ b/source/blender/blenkernel/intern/bassrelief.cc
@@ -152,7 +152,7 @@ struct ReliefOptimizer {
const float (*nos)[3],
const MVert *mvert_,
int totvert_,
- MEdge *medge_,
+ const MEdge *medge_,
int totedge_,
MPropCol *_debugColors[MAX_BASSRELIEF_DEBUG_COLORS],
const MLoopTri *_mlooptri,
@@ -1241,7 +1241,7 @@ struct BassReliefCalcData {
struct Object *ob; /* object we are applying shrinkwrap to */
- struct MVert *vert; /* Array of verts being projected (to fetch normals or other data) */
+ const struct MVert *vert; /* Array of verts being projected (to fetch normals or other data) */
float (*vertexCos)[3]; /* vertexs being shrinkwraped */
const float (*vertexNos)[3]; /* vertexs being shrinkwraped */
int numVerts;
@@ -1299,6 +1299,7 @@ bool BKE_bassrelief_init_tree(
}
data->mesh = mesh;
+ data->mpoly = mesh->polys().data();
if (mesh->totpoly <= 0) {
return false;
@@ -1942,7 +1943,7 @@ ATTR_NO_OPT void BKE_bassrelief_compute_smooth_normal(const struct BassReliefTre
const MLoopTri *tri = &treeData->looptri[looptri_idx];
/* Interpolate smooth normals if enabled. */
- if ((tree->mesh->mpoly[tri->poly].flag & ME_SMOOTH) != 0) {
+ if ((tree->mpoly[tri->poly].flag & ME_SMOOTH) != 0) {
const MVert *verts[] = {
&treeData->vert[treeData->loop[tri->tri[0]].v],
&treeData->vert[treeData->loop[tri->tri[1]].v],
@@ -2122,7 +2123,7 @@ void bassReliefModifier_deform(BassReliefModifierData *smd,
if (mesh != nullptr) {
/* Setup arrays to get vertexs positions, normals and deform weights */
- calc.vert = mesh->mvert;
+ calc.vert = mesh->verts().data();
}
if (!calc.ropt && (smd->shrinkOpts & MOD_BASSRELIEF_OPTIMIZE)) {
@@ -2131,14 +2132,14 @@ void bassReliefModifier_deform(BassReliefModifierData *smd,
calc.ropt = new ReliefOptimizer(vertexCos,
calc.vertexNos,
- mesh->mvert,
+ mesh->verts().data(),
mesh->totvert,
- mesh->medge,
+ mesh->edges().data(),
mesh->totedge,
calc.debugColors,
mlooptri,
totlooptri,
- mesh->mloop,
+ mesh->loops().data(),
smd->detailScale,
smd->boundSmoothFalloff,
smd->boundSmoothSteps);
diff --git a/source/blender/blenkernel/intern/customdata.cc b/source/blender/blenkernel/intern/customdata.cc
index 02a1cdbae54..972d3c4bf9f 100644
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@ -2826,7 +2826,7 @@ ATTR_NO_OPT static void customData_update_offsets(CustomData *data)
// sort by alignment
int aligns[] = {16, 8, 4, 2, 1};
BLI_bitmap *donemap = BLI_BITMAP_NEW_ALLOCA(data->totlayer);
- int alignment = 0;
+ int alignment = 1;
// do large structs first
for (int j = 0; j < data->totlayer; j++) {
@@ -2835,22 +2835,23 @@ ATTR_NO_OPT static void customData_update_offsets(CustomData *data)
/* Float vectors get 4-byte alignment. */
if (ELEM(data->layers[j].type, CD_PROP_COLOR, CD_PROP_FLOAT2, CD_PROP_FLOAT3)) {
- alignment = 4;
+ alignment = max_ii(alignment, 4);
}
else if (size > 4) {
- alignment = 8;
+ alignment = max_ii(alignment, 8);
}
else if (size > 2) {
- alignment = 4;
+ alignment = max_ii(alignment, 4);
}
else if (size > 1) {
- alignment = 2;
+ alignment = max_ii(alignment, 2);
}
else {
- alignment = 1;
+ alignment = max_ii(alignment, 1);
}
- if (size > 16 || size == 10) {
+ /* Detect large structures */
+ if (size > 8) {
BLI_BITMAP_SET(donemap, j, true);
// align to 8-byte boundary
diff --git a/source/blender/blenkernel/intern/dyntopo.c b/source/blender/blenkernel/intern/dyntopo.c
index e9d67099bed..371aa704b5d 100644
--- a/source/blender/blenkernel/intern/dyntopo.c
+++ b/source/blender/blenkernel/intern/dyntopo.c
@@ -1362,7 +1362,10 @@ void BKE_pbvh_bmesh_remove_vertex(PBVH *pbvh, BMVert *v, bool log_vert)
}
}
-ATTR_NO_OPT void BKE_pbvh_bmesh_add_face(PBVH *pbvh, struct BMFace *f, bool log_face, bool force_tree_walk)
+ATTR_NO_OPT void BKE_pbvh_bmesh_add_face(PBVH *pbvh,
+ struct BMFace *f,
+ bool log_face,
+ bool force_tree_walk)
{
bm_logstack_push();
@@ -4746,6 +4749,12 @@ bool BKE_pbvh_bmesh_update_topology(PBVH *pbvh,
break;
}
+ if (bm_elem_is_free((BMElem *)e->v1, BM_VERT) ||
+ bm_elem_is_free((BMElem *)e->v2, BM_VERT)) {
+ printf("%s: error!\n");
+ break;
+ }
+
modified = true;
pbvh_bmesh_collapse_edge(pbvh, e, e->v1, e->v2, NULL, NULL, &eq_ctx);
VALIDATE_LOG(pbvh->bm_log);
diff --git a/source/blender/blenkernel/intern/mesh_legacy_convert.cc b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
index 627c0057a28..5ef1b0636f9 100644
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@ -342,7 +342,7 @@ void BKE_mesh_convert_mfaces_to_mpolys(Mesh *mesh)
* used when creating pdata and ldata for pre-bmesh
* meshes and needed to preserve active/render/clone/stencil flags set in pre-bmesh files.
*/
-static void CustomData_bmesh_do_versions_update_active_layers(CustomData *fdata, CustomData *ldata)
+void CustomData_bmesh_do_versions_update_active_layers(CustomData *fdata, CustomData *ldata)
{
int act;
diff --git a/source/blender/blenkernel/intern/mesh_tangent.cc b/source/blender/blenkernel/intern/mesh_tangent.cc
index 8f9af5e9258..e2ac2a60935 100644
--- a/source/blender/blenkernel/intern/mesh_tangent.cc
+++ b/source/blender/blenkernel/intern/mesh_tangent.cc
@@ -24,7 +24,7 @@
#include "BKE_mesh_tangent.h"
#include "BKE_report.h"
-#include "BLI_strict_flags.h"
+//#include "BLI_strict_flags.h"
#include "atomic_ops.h"
#include "mikktspace.hh"
diff --git a/source/blender/blenkernel/intern/paint.cc b/source/blender/blenkernel/intern/paint.cc
index e4204a19ed4..4b1f269c762 100644
--- a/source/blender/blenkernel/intern/paint.cc
+++ b/source/blender/blenkernel/intern/paint.cc
@@ -85,8 +85,7 @@ static SculptAttribute *sculpt_attribute_ensure_ex(Object *ob,
eCustomDataType proptype,
const char *name,
const SculptAttributeParams *params,
- PBVHType pbvhtype,
- bool flat_array_for_bmesh);
+ PBVHType pbvhtype);
static void sculptsession_bmesh_add_layers(Object *ob);
using blender::MutableSpan;
@@ -1462,6 +1461,7 @@ static void sculptsession_free_pbvh(Object *object)
}
if (ss->pbvh) {
+#ifdef WITH_PBVH_CACHE
if (ss->needs_pbvh_rebuild) {
if (ss->pmap) {
BKE_pbvh_pmap_release(ss->pmap);
@@ -1474,7 +1474,14 @@ static void sculptsession_free_pbvh(Object *object)
else {
BKE_pbvh_set_cached(object, ss->pbvh);
}
+#else
+ if (s
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list