[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