[Bf-blender-cvs] [a38889b2bdb] sculpt-dev: Sculpt-dev: Fix merge errors

Joseph Eagar noreply at git.blender.org
Sat Apr 9 06:40:39 CEST 2022


Commit: a38889b2bdbdaebac3fe09678bd6a823ca77fd97
Author: Joseph Eagar
Date:   Fri Apr 8 21:36:50 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rBa38889b2bdbdaebac3fe09678bd6a823ca77fd97

Sculpt-dev: Fix merge errors

* Cleaned up a few old bmesh-only pbvh
  functions into generic ones.
* Sculpt colors from master is now merged in.
* Implemenation for querying original verts is now
  inside pbvh instead of sculpt.

===================================================================

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	release/scripts/startup/bl_ui/properties_data_mesh.py
M	source/blender/blenkernel/BKE_pbvh.h
M	source/blender/blenkernel/intern/attribute.c
M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenkernel/intern/pbvh.c
M	source/blender/blenkernel/intern/pbvh.cc
M	source/blender/blenkernel/intern/pbvh_bmesh.c
M	source/blender/blenkernel/intern/pbvh_intern.h
M	source/blender/blenloader/intern/versioning_300.c
M	source/blender/draw/DRW_engine.h
M	source/blender/draw/intern/draw_cache.c
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/editors/sculpt_paint/sculpt_dyntopo.c
M	source/blender/editors/sculpt_paint/sculpt_intern.h
M	source/blender/editors/sculpt_paint/sculpt_paint_color.c
M	source/blender/editors/sculpt_paint/sculpt_undo.c
M	source/blender/gpu/GPU_buffers.h
M	source/blender/gpu/intern/gpu_buffers.c

===================================================================

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index a1ba04049dd..a4bff0f30e7 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -1151,7 +1151,8 @@ def km_uv_editor(params):
          {"type": params.select_mouse, "value": params.select_mouse_value_fallback, "ctrl": True, "shift": True},
          {"properties": [("use_fill", True)]}),
         ("uv.select_split", {"type": 'Y', "value": 'PRESS'}, None),
-        op_tool_optional(("uv.select_box", {"type": 'B', "value": 'PRESS'},
+        op_tool_optional(
+            ("uv.select_box", {"type": 'B', "value": 'PRESS'},
              {"properties": [("pinned", False)]}),
             (op_tool, "builtin.select_box"), params),
         ("uv.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True},
@@ -5850,7 +5851,8 @@ def km_image_editor_tool_uv_select(params, *, fallback):
 
 
 def km_image_editor_tool_uv_select_box(params, *, fallback):
-    return (_fallback_id("Image Editor Tool: Uv, Select Box", fallback),
+    return (
+        _fallback_id("Image Editor Tool: Uv, Select Box", fallback),
         {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
         {"items": [
             *([] if (fallback and not params.use_fallback_tool) else _template_items_tool_select_actions_simple(
diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py
index 7dc73499dde..17206820578 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -663,7 +663,6 @@ classes = (MESH_MT_vertex_group_context_menu,
     MESH_UL_shape_keys,
     MESH_UL_uvmaps,
     MESH_UL_attributes,
-    MESH_UL_color_attributes,
     DATA_PT_context_mesh,
     DATA_PT_vertex_groups,
     DATA_PT_shape_keys,
diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h
index 520986f5600..250b3a5f147 100644
--- a/source/blender/blenkernel/BKE_pbvh.h
+++ b/source/blender/blenkernel/BKE_pbvh.h
@@ -334,22 +334,13 @@ struct BMLog *BKE_pbvh_get_bm_log(PBVH *pbvh);
 
 /* update MSculptVerts, doesn't take pbvh argument to allow usage if pbvh doesn't currently exist
  */
-void BKE_pbvh_update_sculpt_verts(struct BMesh *bm,
-                                  const int cd_sculpt_vert,
-                                  const int cd_faceset_offset,
-                                  const int cd_vert_node_offset,
-                                  const int cd_face_node_offset,
-                                  const int boundary_symmetry,
-                                  const int vcol_type,
-                                  const AttributeDomain vcol_domain,
-                                  const int cd_vcol_offset,
-                                  bool do_uvs);
+void BKE_pbvh_update_sculpt_verts(PBVH *pbvh);
 
 /** update original data, only data whose r_** parameters are passed in will be updated*/
-void BKE_pbvh_bmesh_update_origvert(
-    PBVH *pbvh, struct BMVert *v, float **r_co, float **r_no, float **r_color);
+bool BKE_pbvh_get_origvert(
+    PBVH *pbvh, SculptVertRef vertex, float **r_co, float **r_no, float **r_color);
 
-/**
+    /**
 checks if original data needs to be updated for v, and if so updates it.  Stroke_id
 is provided by the sculpt code and is used to detect updates.  The reason we do it
 inside the verts and not in the nodes is to allow splitting of the pbvh during the stroke.
@@ -1148,8 +1139,6 @@ void BKE_dyntopo_remesh(DynTopoState *ds,
                         DynRemeshParams *params,
                         int steps,
                         PBVHTopologyUpdateMode mode);
-void BKE_pbvh_bmesh_get_vcol(
-    struct BMVert *v, float color[4], int vcol_type, AttributeDomain vcol_domain, int vcol_offset);
 /*
 
 use pmap to build an array of edge indices surrounding vertex
diff --git a/source/blender/blenkernel/intern/attribute.c b/source/blender/blenkernel/intern/attribute.c
index 13c896fd1ab..f74609ccd75 100644
--- a/source/blender/blenkernel/intern/attribute.c
+++ b/source/blender/blenkernel/intern/attribute.c
@@ -540,7 +540,7 @@ CustomDataLayer *BKE_id_attribute_subset_active_get(const ID *id,
       CustomDataLayer *layer = cdata->layers + j;
 
       if (!(CD_TYPE_AS_MASK(layer->type) & mask) ||
-          (CD_TYPE_AS_MASK(layer->type) & CD_FLAG_TEMPORARY)) {
+          (CD_TYPE_AS_MASK(layer->flag) & CD_FLAG_TEMPORARY)) {
         continue;
       }
 
@@ -615,6 +615,21 @@ void BKE_id_attributes_render_color_set(ID *id, CustomDataLayer *active_layer)
       id, active_layer, CD_FLAG_COLOR_RENDER, ATTR_DOMAIN_MASK_COLOR, CD_MASK_COLOR_ALL);
 }
 
+CustomDataLayer *BKE_id_attributes_color_find(const ID *id, const char *name)
+{
+  CustomDataLayer *layer = BKE_id_attribute_find(id, name, CD_PROP_COLOR, ATTR_DOMAIN_POINT);
+  if (layer == NULL) {
+    layer = BKE_id_attribute_find(id, name, CD_PROP_COLOR, ATTR_DOMAIN_CORNER);
+  }
+  if (layer == NULL) {
+    layer = BKE_id_attribute_find(id, name, CD_MLOOPCOL, ATTR_DOMAIN_POINT);
+  }
+  if (layer == NULL) {
+    layer = BKE_id_attribute_find(id, name, CD_MLOOPCOL, ATTR_DOMAIN_CORNER);
+  }
+  return layer;
+}
+
 void BKE_id_attribute_copy_domains_temp(short id_type,
                                         const CustomData *vdata,
                                         const CustomData *edata,
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 2ec72359582..272b144818c 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1758,6 +1758,11 @@ static void sculpt_update_object(Depsgraph *depsgraph,
     ss->medge = me->medge;
     ss->mpoly = me->mpoly;
     ss->mloop = me->mloop;
+    ss->vdata = &me->vdata;
+    ss->pdata = &me->pdata;
+    ss->edata = &me->edata;
+    ss->ldata = &me->ldata;
+
     ss->multires.active = false;
     ss->multires.modifier = NULL;
     ss->multires.level = 0;
@@ -1800,6 +1805,8 @@ static void sculpt_update_object(Depsgraph *depsgraph,
 
   PBVH *pbvh = BKE_sculpt_object_pbvh_ensure(depsgraph, ob);
 
+  BKE_pbvh_update_active_vcol(pbvh, me);
+
   if (BKE_pbvh_type(pbvh) == PBVH_FACES) {
     ss->vert_normals = BKE_pbvh_get_vert_normals(ss->pbvh);
   }
@@ -3427,6 +3434,8 @@ void BKE_sculptsession_update_attr_refs(Object *ob)
         ss->vcol = layer->data;
       }
     }
+
+    BKE_pbvh_update_active_vcol(ss->pbvh, me);
   }
 
   if (ss->bm) {
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index a6bb422f938..5b3f50169c5 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -160,8 +160,8 @@ static void update_node_vb(PBVH *pbvh, PBVHNode *node, int updateflag)
   BB_reset(&vb);
   BB_reset(&orig_vb);
 
-  bool do_orig = updateflag & PBVH_UpdateOriginalBB;
-  bool do_normal = updateflag & PBVH_UpdateBB;
+  bool do_orig = true;    // XXX updateflag & PBVH_UpdateOriginalBB;
+  bool do_normal = true;  // XXX updateflag & PBVH_UpdateBB;
 
   if (node->flag & PBVH_Leaf) {
     PBVHVertexIter vd;
@@ -1411,7 +1411,6 @@ static int pbvh_get_buffers_update_flags(PBVH *UNUSED(pbvh))
   return update_flags;
 }
 
-
 bool BKE_pbvh_get_color_layer(const Mesh *me, CustomDataLayer **r_layer, AttributeDomain *r_attr)
 {
   CustomDataLayer *layer = BKE_id_attributes_active_color_get((ID *)me);
@@ -1452,7 +1451,7 @@ static void pbvh_update_draw_buffer_cb(void *__restrict userdata,
   AttributeDomain vcol_domain;
 
   BKE_pbvh_get_color_layer(me, &vcol_layer, &vcol_domain);
-  
+
   CustomData *vdata, *ldata;
 
   if (!pbvh->bm) {
@@ -1703,7 +1702,8 @@ static void pbvh_update_draw_buffers(
                                       pbvh->vcol_type,
                                       pbvh->vcol_domain,
                                       vcol_layer,
-                                      render_vcol_layer)) {
+                                      render_vcol_layer,
+                                      !GPU_pbvh_need_full_render_get())) {
     // attribute layout changed; force rebuild
     for (int i = 0; i < pbvh->totnode; i++) {
       PBVHNode *node = pbvh->nodes + i;
@@ -4289,9 +4289,9 @@ void BKE_pbvh_check_tri_areas(PBVH *pbvh, PBVHNode *node)
           continue;
         }
 
-        MVert *mv1 = pbvh->verts + pbvh->mloop[lt->tri[0]].v;
-        MVert *mv2 = pbvh->verts + pbvh->mloop[lt->tri[1]].v;
-        MVert *mv3 = pbvh->verts + pbvh->mloop[lt->tri[2]].v;
+        const MVert *mv1 = pbvh->verts + pbvh->mloop[lt->tri[0]].v;
+        const MVert *mv2 = pbvh->verts + pbvh->mloop[lt->tri[1]].v;
+        const MVert *mv3 = pbvh->verts + pbvh->mloop[lt->tri[2]].v;
 
         float area = area_tri_v3(mv1->co, mv2->co, mv3->co);
 
@@ -4973,6 +4973,8 @@ PBVH *BKE_pbvh_get_or_free_cached(Object *ob, Mesh *me, PBVHType pbvh_type)
         break;
     }
 
+    BKE_pbvh_update_active_vcol(pbvh, me);
+
     return pbvh;
   }
 
@@ -5159,7 +5161,6 @@ bool BKE_pbvh_pmap_release(SculptPMap *pmap)
   return false;
 }
 
-
 bool BKE_pbvh_is_drawing(const PBVH *pbvh)
 {
   return pbvh->is_drawing;
@@ -5182,7 +5183,23 @@ void BKE_pbvh_node_num_loops(PBVH *pbvh, PBVHNode *node, int *r_totloop)
 
 void BKE_pbvh_update_active_vcol(PBVH *pbvh, const Mesh *mesh)
 {
+  CustomDataLayer *last_layer = pbvh->color_layer;
+
   BKE_pbvh_get_color_layer(mesh, &pbvh->color_layer, &pbvh->color_domain);
+
+  if (pbvh->color_layer) {
+    pbvh->color_type = pbvh->color_layer->type;
+  }
+
+  if (pbvh->color_layer != last_layer) {
+    for (int i = 0; i < pbvh->totnode; i++) {
+      PBVHNode *node = pbvh->nodes + i;
+
+      if (node->flag & PBVH_Leaf) {
+        BKE_pbvh_node_mark_update_color(node);
+      }
+    }
+  }
 }
 
 void BKE_pbvh_pmap_set(PBVH *pbvh, SculptPMap *pmap)
@@ -5238,3 +5255,75 @@ void BKE_pbvh_ensure_node_loops(PBVH *pbvh)
 
   MEM_SAFE_FREE(visit);
 }
+
+bool BKE_pbvh_get_origvert(
+    PBVH *pbvh, SculptVertRef vertex, float **r_co, float **r_no, float **r_color)
+{
+  MSculptVert *mv;
+
+ 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list