[Bf-blender-cvs] [b8bbefb2029] soc-2021-curves: Merge 'master' into soc-2021-curves branch

dilithjay noreply at git.blender.org
Sat Jul 24 19:12:04 CEST 2021


Commit: b8bbefb2029e3bb36b51c7f78469bd1cf65aa770
Author: dilithjay
Date:   Fri Jul 23 23:30:51 2021 +0530
Branches: soc-2021-curves
https://developer.blender.org/rBb8bbefb2029e3bb36b51c7f78469bd1cf65aa770

Merge 'master' into soc-2021-curves branch

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

M	source/blender/blenkernel/intern/mesh_convert.c
M	source/blender/blenkernel/intern/object_update.c
M	source/blender/compositor/intern/COM_Debug.cc
M	source/blender/compositor/intern/COM_Debug.h
M	source/blender/editors/transform/transform_convert_mesh.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c

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

diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c
index 8d67e8fd33b..0e4fe91e577 100644
--- a/source/blender/blenkernel/intern/mesh_convert.c
+++ b/source/blender/blenkernel/intern/mesh_convert.c
@@ -213,19 +213,18 @@ static void make_edges_mdata_extend(
 
 /* Initialize mverts, medges and, faces for converting nurbs to mesh and derived mesh */
 /* use specified dispbase */
-int BKE_mesh_nurbs_displist_to_mdata(const Object *ob,
-                                     const ListBase *dispbase,
-                                     MVert **r_allvert,
-                                     int *r_totvert,
-                                     MEdge **r_alledge,
-                                     int *r_totedge,
-                                     MLoop **r_allloop,
-                                     MPoly **r_allpoly,
-                                     MLoopUV **r_alluv,
-                                     int *r_totloop,
-                                     int *r_totpoly)
+static int mesh_nurbs_displist_to_mdata(const Curve *cu,
+                                        const ListBase *dispbase,
+                                        MVert **r_allvert,
+                                        int *r_totvert,
+                                        MEdge **r_alledge,
+                                        int *r_totedge,
+                                        MLoop **r_allloop,
+                                        MPoly **r_allpoly,
+                                        MLoopUV **r_alluv,
+                                        int *r_totloop,
+                                        int *r_totpoly)
 {
-  const Curve *cu = ob->data;
   MVert *mvert;
   MPoly *mpoly;
   MLoop *mloop;
diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c
index ff7acf3fa5f..7e15ac5de5d 100644
--- a/source/blender/blenkernel/intern/object_update.c
+++ b/source/blender/blenkernel/intern/object_update.c
@@ -388,36 +388,12 @@ void BKE_object_batch_cache_dirty_tag(Object *ob)
   BKE_object_data_batch_cache_dirty_tag(ob->data);
 }
 
-void BKE_object_data_eval_batch_cache_dirty_tag(Depsgraph *depsgraph, ID *object_data)
-{
-  DEG_debug_print_eval(depsgraph, __func__, object_data->name, object_data);
-  BKE_object_data_batch_cache_dirty_tag(object_data);
-}
-
-void BKE_object_data_eval_batch_cache_deform_tag(Depsgraph *depsgraph, ID *object_data)
-{
-  DEG_debug_print_eval(depsgraph, __func__, object_data->name, object_data);
-  switch (GS(object_data->name)) {
-    case ID_ME:
-      BKE_mesh_batch_cache_dirty_tag((Mesh *)object_data, BKE_MESH_BATCH_DIRTY_DEFORM);
-      break;
-    default:
-      /* Only mesh is currently supported. Fallback to dirty all for other datablocks types. */
-      BKE_object_data_batch_cache_dirty_tag(object_data);
-      break;
-  }
-}
-
-void BKE_object_batch_cache_dirty_tag(Object *ob)
-{
-  BKE_object_data_batch_cache_dirty_tag(ob->data);
-}
-
 void BKE_object_eval_uber_data(Depsgraph *depsgraph, Scene *scene, Object *ob)
 {
   DEG_debug_print_eval(depsgraph, __func__, ob->id.name, ob);
   BLI_assert(ob->type != OB_ARMATURE);
   BKE_object_handle_data_update(depsgraph, scene, ob);
+  BKE_object_batch_cache_dirty_tag(ob);
 }
 
 void BKE_object_eval_ptcache_reset(Depsgraph *depsgraph, Scene *scene, Object *object)
@@ -529,4 +505,4 @@ void BKE_object_eval_eval_base_flags(Depsgraph *depsgraph,
     BLI_assert(base_orig->object != NULL);
     base_orig->flag = base->flag;
   }
-}
\ No newline at end of file
+}
diff --git a/source/blender/compositor/intern/COM_Debug.cc b/source/blender/compositor/intern/COM_Debug.cc
index 4d43ab1c6c6..c0460aed4a4 100644
--- a/source/blender/compositor/intern/COM_Debug.cc
+++ b/source/blender/compositor/intern/COM_Debug.cc
@@ -52,7 +52,7 @@ std::string DebugInfo::m_current_node_name;
 std::string DebugInfo::m_current_op_name;
 DebugInfo::GroupStateMap DebugInfo::m_group_states;
 
-static std::string operation_class_name(NodeOperation *op)
+static std::string operation_class_name(const NodeOperation *op)
 {
   std::string full_name = typeid(*op).name();
   /* Remove name-spaces. */
diff --git a/source/blender/compositor/intern/COM_Debug.h b/source/blender/compositor/intern/COM_Debug.h
index fe2262efcec..23d99c7e529 100644
--- a/source/blender/compositor/intern/COM_Debug.h
+++ b/source/blender/compositor/intern/COM_Debug.h
@@ -30,6 +30,9 @@ namespace blender::compositor {
 static constexpr bool COM_EXPORT_GRAPHVIZ = false;
 static constexpr bool COM_GRAPHVIZ_SHOW_NODE_NAME = false;
 
+/* Saves operations results to image files. */
+static constexpr bool COM_EXPORT_OPERATION_BUFFERS = false;
+
 class Node;
 class ExecutionSystem;
 class ExecutionGroup;
@@ -121,6 +124,14 @@ class DebugInfo {
     }
   };
 
+  static void operation_rendered(const NodeOperation *op, MemoryBuffer *render)
+  {
+    /* Don't export constant operations as there are too many and it's rarely useful. */
+    if (COM_EXPORT_OPERATION_BUFFERS && render && !render->is_a_single_elem()) {
+      export_operation(op, render);
+    }
+  }
+
   static void graphviz(const ExecutionSystem *system, StringRefNull name = "");
 
  protected:
diff --git a/source/blender/editors/transform/transform_convert_mesh.c b/source/blender/editors/transform/transform_convert_mesh.c
index 04957c393b3..f31abe22d2a 100644
--- a/source/blender/editors/transform/transform_convert_mesh.c
+++ b/source/blender/editors/transform/transform_convert_mesh.c
@@ -1964,242 +1964,204 @@ static void tc_mesh_partial_types_calc(TransInfo *t, struct PartialTypeState *r_
       partial_for_normals = PARTIAL_TYPE_ALL;
     }
   }
-  else {
-    /* See the body of the comments in the previous block for details. */
-    verts_mask = BLI_BITMAP_NEW(em->bm->totvert, __func__);
-    int i;
-    TransData *td;
-    for (i = 0, td = tc->data; i < tc->data_len; i++, td++) {
-      if (td->factor == 0.0f) {
-        continue;
-      }
-      const BMVert *v = (BMVert *)td->extra;
-      const int v_index = BM_elem_index_get(v);
-      BLI_assert(!BLI_BITMAP_TEST(verts_mask, v_index));
-      BLI_BITMAP_ENABLE(verts_mask, v_index);
-      verts_mask_count += 1;
-    }
-
-    r_partial_state->for_looptri = partial_for_looptri;
-    r_partial_state->for_normals = partial_for_normals;
-  }
 
-  static void tc_mesh_partial_update(
-      TransInfo * t, TransDataContainer * tc, const struct PartialTypeState *partial_state)
-  {
-    BMEditMesh *em = BKE_editmesh_from_object(tc->obedit);
+  r_partial_state->for_looptri = partial_for_looptri;
+  r_partial_state->for_normals = partial_for_normals;
+}
 
-    struct TransCustomDataMesh *tcmd = tc_mesh_customdata_ensure(tc);
+static void tc_mesh_partial_update(TransInfo *t,
+                                   TransDataContainer *tc,
+                                   const struct PartialTypeState *partial_state)
+{
+  BMEditMesh *em = BKE_editmesh_from_object(tc->obedit);
 
-    const struct PartialTypeState *partial_state_prev = &tcmd->partial_update_state_prev;
+  struct TransCustomDataMesh *tcmd = tc_mesh_customdata_ensure(tc);
 
-    /* Promote the partial update types based on the previous state
-     * so the values that no longer modified are reset before being left as-is.
-     * Needed for translation which can toggle snap-to-normal during transform.  */
-    const enum ePartialType partial_for_looptri = MAX2(partial_state->for_looptri,
-                                                       partial_state_prev->for_looptri);
-    const enum ePartialType partial_for_normals = MAX2(partial_state->for_normals,
-                                                       partial_state_prev->for_normals);
+  const struct PartialTypeState *partial_state_prev = &tcmd->partial_update_state_prev;
 
-    if ((partial_for_looptri == PARTIAL_TYPE_ALL) && (partial_for_normals == PARTIAL_TYPE_ALL) &&
-        (em->bm->totvert == em->bm->totvertsel)) {
-      /* The additional cost of generating the partial connectivity data isn't justified
-       * when all data needs to be updated.
-       *
-       * While proportional editing can cause all geometry to need updating with a partial
-       * selection. It's impractical to calculate this ahead of time. Further, the down side of
-       * using partial updates when their not needed is negligible. */
-      BKE_editmesh_looptri_and_normals_calc(em);
-    }
-    else {
-      if (partial_for_looptri != PARTIAL_NONE) {
-        BMPartialUpdate *bmpinfo = tc_mesh_partial_ensure(t, tc, partial_for_looptri);
-        BKE_editmesh_looptri_calc_with_partial_ex(em,
-                                                  bmpinfo,
-                                                  &(const struct BMeshCalcTessellation_Params){
-                                                      .face_normals = true,
-                                                  });
-      }
+  /* Promote the partial update types based on the previous state
+   * so the values that no longer modified are reset before being left as-is.
+   * Needed for translation which can toggle snap-to-normal during transform. */
+  const enum ePartialType partial_for_looptri = MAX2(partial_state->for_looptri,
+                                                     partial_state_prev->for_looptri);
+  const enum ePartialType partial_for_normals = MAX2(partial_state->for_normals,
+                                                     partial_state_prev->for_normals);
 
-      if (partial_for_normals != PARTIAL_NONE) {
-        BMPartialUpdate *bmpinfo = tc_mesh_partial_ensure(t, tc, partial_for_normals);
-        /* While not a large difference, take advantage of existing normals where possible. */
-        const bool face_normals = !((partial_for_looptri == PARTIAL_TYPE_ALL) ||
-                                    ((partial_for_looptri == PARTIAL_TYPE_GROUP) &&
-                                     (partial_for_normals == PARTIAL_TYPE_GROUP)));
-        BM_mesh_normals_update_with_partial_ex(em->bm,
-                                               bmpinfo,
-                                               &(const struct BMeshNormalsUpdate_

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list