[Bf-blender-cvs] [93b96bab9a5] sculpt-dev: Merge branch 'master' into sculpt-dev

Joseph Eagar noreply at git.blender.org
Mon Jul 4 08:40:30 CEST 2022


Commit: 93b96bab9a5215847fb2181f5141d493ce355fc0
Author: Joseph Eagar
Date:   Sun Jul 3 23:39:50 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rB93b96bab9a5215847fb2181f5141d493ce355fc0

Merge branch 'master' into sculpt-dev

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



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

diff --cc .clang-format
index a16a1faa16d,7b8e0ef8eba..3ac4016629e
--- a/.clang-format
+++ b/.clang-format
@@@ -265,7 -265,7 +265,8 @@@ ForEachMacros
    - SET_SLOT_PROBING_BEGIN
    - MAP_SLOT_PROBING_BEGIN
    - VECTOR_SET_SLOT_PROBING_BEGIN
 +  - TGSET_ITER
+   - WL_ARRAY_FOR_EACH
  
  StatementMacros:
    - PyObject_HEAD
diff --cc release/datafiles/locale
index 71e0f87dd1b,9a85b137951..c15c8b01dcf
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 71e0f87dd1ba4e0ed5f619b031045a428e534230
 -Subproject commit 9a85b13795157560b319235c63f5a13b0107ba41
++Subproject commit c15c8b01dcf6ddaa753d04efab8aed9b1c1603da
diff --cc release/scripts/addons
index bcb71eea69a,807a64cdfc5..849e7196eb4
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit bcb71eea69a7b83c44112a5872ccd67cae96ec6f
 -Subproject commit 807a64cdfc50de1cfb263f2eb68680feddb66ec7
++Subproject commit 849e7196eb4ee7bc5ca8a5644da49ffbd3ff3c97
diff --cc release/scripts/startup/bl_ui/space_view3d.py
index d3e1dfdda63,5a38c4175a8..09e3552b151
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@@ -6591,16 -6648,30 +6620,39 @@@ class VIEW3D_PT_overlay_sculpt(Panel)
          sub.active = sculpt.show_face_sets
          row.prop(overlay, "sculpt_mode_face_sets_opacity", text="Face Sets")
  
 +        row = layout.row(align=True)
 +        row.prop(overlay, "sculpt_mode_use_face_set_moire")
 +
 +        if overlay.sculpt_mode_use_face_set_moire:
 +            row = layout.row(align=True)
 +            row.prop(overlay, "sculpt_mode_face_sets_moire_seed", text="Seed")
 +            row.prop(overlay, "sculpt_mode_face_sets_moire_scale", text="Size")
 +            row.prop(overlay, "use_sculpt_mode_face_sets_moire", text="Size")
 +
  
+ class VIEW3D_PT_overlay_sculpt_curves(Panel):
+     bl_space_type = 'VIEW_3D'
+     bl_context = ".curves_sculpt"
+     bl_region_type = 'HEADER'
+     bl_parent_id = 'VIEW3D_PT_overlay'
+     bl_label = "Sculpt"
+ 
+     @classmethod
+     def poll(cls, context):
+         return context.mode == 'SCULPT_CURVES' and (context.object)
+ 
+     def draw(self, context):
+         layout = self.layout
+         tool_settings = context.tool_settings
+         sculpt = tool_settings.sculpt
+ 
+         view = context.space_data
+         overlay = view.overlay
+ 
+         row = layout.row(align=True)
+         row.prop(overlay, "sculpt_mode_mask_opacity", text="Selection Opacity")
+ 
+ 
  class VIEW3D_PT_overlay_bones(Panel):
      bl_space_type = 'VIEW_3D'
      bl_region_type = 'HEADER'
diff --cc source/blender/blenkernel/BKE_mesh.h
index 85796adfa01,66e0ff8e81a..4359dface1f
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -54,10 -52,21 +54,22 @@@ extern "C" 
  #  define BKE_MESH_OMP_LIMIT 10000
  #endif
  
+ /*  mesh_runtime.cc  */
+ 
+ /**
+  * Call after changing vertex positions to tag lazily calculated caches for recomputation.
+  */
+ void BKE_mesh_tag_coords_changed(struct Mesh *mesh);
+ 
+ /**
+  * Call after moving every mesh vertex by the same translation.
+  */
+ void BKE_mesh_tag_coords_changed_uniformly(struct Mesh *mesh);
+ 
  /* *** mesh.c *** */
  
 -struct BMesh *BKE_mesh_to_bmesh_ex(const struct Mesh *me,
 +struct BMesh *BKE_mesh_to_bmesh_ex(const struct Object *ob,
 +                                   const struct Mesh *me,
                                     const struct BMeshCreateParams *create_params,
                                     const struct BMeshFromMeshParams *convert_params);
  struct BMesh *BKE_mesh_to_bmesh(struct Mesh *me,
diff --cc source/blender/blenkernel/BKE_paint.h
index b88e4358352,ffe80ff47b6..2f9740b9c78
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@@ -786,10 -551,8 +786,9 @@@ typedef struct SculptSession 
    float (*orig_cos)[3];         /* Coords of un-deformed mesh. */
    float (*deform_cos)[3];       /* Coords of deformed mesh but without stroke displacement. */
    float (*deform_imats)[3][3];  /* Crazy-space deformation matrices. */
 +  float *face_areas;            /* cached face areas for PBVH_FACES and PBVH_GRIDS */
  
-   /* Used to cache the render of the active texture */
-   unsigned int texcache_side, *texcache, texcache_actual;
+   /* Pool for texture evaluations. */
    struct ImagePool *tex_pool;
  
    struct StrokeCache *cache;
diff --cc source/blender/blenkernel/CMakeLists.txt
index e54d1480286,50be5b475d4..4bf8f62e40d
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@@ -119,7 -111,7 +119,8 @@@ set(SR
    intern/curve_decimate.c
    intern/curve_deform.c
    intern/curve_eval.cc
 +  intern/curvemapping_cache.c
+   intern/curve_legacy_convert.cc
    intern/curve_nurbs.cc
    intern/curve_poly.cc
    intern/curve_to_mesh_convert.cc
diff --cc source/blender/blenkernel/intern/node.cc
index 8e90ad595e1,5be912ffb2b..a6a37f334ee
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@@ -4754,7 -4754,9 +4754,8 @@@ static void registerGeometryNodes(
    register_node_type_geo_distribute_points_on_faces();
    register_node_type_geo_dual_mesh();
    register_node_type_geo_edge_split();
 -  register_node_type_geo_extrude_mesh();
    register_node_type_geo_field_at_index();
+   register_node_type_geo_field_on_domain();
    register_node_type_geo_flip_faces();
    register_node_type_geo_geometry_to_instance();
    register_node_type_geo_image_texture();
diff --cc source/blender/blenkernel/intern/paint.c
index 85500cdb8a7,89cc25b31e6..dfa13e866f0
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@@ -1553,20 -1481,8 +1553,18 @@@ void BKE_sculptsession_free(Object *ob
      MEM_SAFE_FREE(ss->vemap);
      MEM_SAFE_FREE(ss->vemap_mem);
  
-     MEM_SAFE_FREE(ss->texcache);
- 
 -    if (ss->bm_log) {
 -      BM_log_free(ss->bm_log);
 +    bool SCULPT_attr_release_layer(
 +        SculptSession * ss, Object * ob, struct SculptCustomLayer * scl);
 +
 +    if (ss->layers_to_free) {
 +      for (int i = 0; i < ss->tot_layers_to_free; i++) {
 +        if (ss->layers_to_free[i]) {
 +          SCULPT_attr_release_layer(ss, ob, ss->layers_to_free[i]);
 +          // SCULPT_attr_release_layer frees layers_to_free[i] itself
 +        }
 +      }
 +
 +      MEM_freeN(ss->layers_to_free);
      }
  
      if (ss->tex_pool) {
@@@ -1923,172 -1773,69 +1921,208 @@@ static void sculpt_update_object(Depsgr
      }
    }
  
 +  int totvert = 0;
 +
 +  switch (BKE_pbvh_type(pbvh)) {
 +    case PBVH_FACES:
 +      totvert = me->totvert;
 +      break;
 +    case PBVH_BMESH:
 +      totvert = ss->bm ? ss->bm->totvert : me->totvert;
 +      break;
 +    case PBVH_GRIDS:
 +      totvert = BKE_pbvh_get_grid_num_vertices(ss->pbvh);
 +      break;
 +  }
 +
 +  BKE_sculptsession_check_sculptverts(ob->sculpt, pbvh, totvert);
 +
 +  if (ss->bm && me->key && ob->shapenr != ss->bm->shapenr) {
 +    KeyBlock *actkey = BLI_findlink(&me->key->block, ss->bm->shapenr - 1);
 +    KeyBlock *newkey = BLI_findlink(&me->key->block, ob->shapenr - 1);
 +
 +    bool updatePBVH = false;
 +
 +    if (!actkey) {
 +      printf("%s: failed to find active shapekey\n", __func__);
 +      if (!ss->bm->shapenr || !CustomData_has_layer(&ss->bm->vdata, CD_SHAPEKEY)) {
 +        printf("allocating shapekeys. . .\n");
 +
 +        // need to allocate customdata for keys
 +        for (KeyBlock *key = (KeyBlock *)me->key->block.first; key; key = key->next) {
 +
 +          int idx = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, key->name);
 +
 +          if (idx == -1) {
 +            BM_data_layer_add_named(ss->bm, &ss->bm->vdata, CD_SHAPEKEY, key->name);
 +            BKE_sculptsession_update_attr_refs(ob);
 +
 +            idx = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, key->name);
 +            ss->bm->vdata.layers[idx].uid = key->uid;
 +          }
 +
 +          int cd_shapeco = ss->bm->vdata.layers[idx].offset;
 +          BMVert *v;
 +          BMIter iter;
 +
 +          BM_ITER_MESH (v, &iter, ss->bm, BM_VERTS_OF_MESH) {
 +            float *keyco = BM_ELEM_CD_GET_VOID_P(v, cd_shapeco);
 +
 +            copy_v3_v3(keyco, v->co);
 +          }
 +        }
 +      }
 +
 +      updatePBVH = true;
 +      ss->bm->shapenr = ob->shapenr;
 +    }
 +
 +    if (!newkey) {
 +      printf("%s: failed to find new active shapekey\n", __func__);
 +    }
 +
 +    if (actkey && newkey) {
 +      int cd_co1 = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, actkey->name);
 +      int cd_co2 = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, newkey->name);
 +
 +      BMVert *v;
 +      BMIter iter;
 +
 +      if (cd_co1 == -1) {  // non-recoverable error
 +        printf("%s: failed to find active shapekey in customdata.\n", __func__);
 +        return;
 +      }
 +      else if (cd_co2 == -1) {
 +        printf("%s: failed to find new shapekey in customdata; allocating . . .\n", __func__);
 +
 +        BM_data_layer_add_named(ss->bm, &ss->bm->vdata, CD_SHAPEKEY, newkey->name);
 +        int idx = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, newkey->name);
 +
 +        int cd_co = ss->bm->vdata.layers[idx].offset;
 +        ss->bm->vdata.layers[idx].uid = newkey->uid;
 +
 +        BKE_sculptsession_update_attr_refs(ob);
 +
 +        BM_ITER_MESH (v, &iter, ss->bm, BM_VERTS_OF_MESH) {
 +          float *keyco = BM_ELEM_CD_GET_VOID_P(v, cd_co);
 +          copy_v3_v3(keyco, v->co);
 +        }
 +
 +        cd_co2 = idx;
 +      }
 +
 +      cd_co1 = ss->bm->vdata.layers[cd_co1].offset;
 +      cd_co2 = ss->bm->vdata.layers[cd_co2].offset;
 +
 +      BM_ITER_MESH (v, &iter, ss->bm, BM_VERTS_OF_MESH) {
 +        float *co1 = BM_ELEM_CD_GET_VOID_P(v, cd_co1);
 +        float *co2 = BM_ELEM_CD_GET_VOID_P(v, cd_co2);
 +
 +        copy_v3_v3(co1, v->co);
 +        copy_v3_v3(v->co, co2);
 +      }
 +
 +      ss->bm->shapenr = ob->shapenr;
 +
 +      updatePBVH = true;
 +    }
 +
 +    if (updatePBVH && ss->pbvh) {
 +      PBVHNode **nodes;
 +      int

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list