[Bf-blender-cvs] [6e069b7070d] temp-sculpt-colors: temp-sculpt-colors: fix icons and a couple of bugs

Joseph Eagar noreply at git.blender.org
Wed Nov 17 11:36:49 CET 2021


Commit: 6e069b7070d329e59c4d57e1847c10fd7423f813
Author: Joseph Eagar
Date:   Wed Nov 17 02:32:47 2021 -0800
Branches: temp-sculpt-colors
https://developer.blender.org/rB6e069b7070d329e59c4d57e1847c10fd7423f813

temp-sculpt-colors: fix icons and a couple of bugs

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

M	release/datafiles/blender_icons_geom.py
M	release/datafiles/icons/brush.sculpt.displacement_smear.dat
M	release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenkernel/intern/attribute.c
M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/paint.c
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc
M	source/blender/editors/datafiles/CMakeLists.txt

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

diff --git a/release/datafiles/blender_icons_geom.py b/release/datafiles/blender_icons_geom.py
index 82d4f813062..5411412a2e1 100644
--- a/release/datafiles/blender_icons_geom.py
+++ b/release/datafiles/blender_icons_geom.py
@@ -118,7 +118,7 @@ def object_child_map(objects):
 
 def mesh_data_lists_from_mesh(me, material_colors):
     me_loops = me.loops[:]
-    me_loops_color = me.vertex_colors.active.data[:]
+    me_loops_color = me.vertex_colors.active.data[:] if me.vertex_colors.active else None
     me_verts = me.vertices[:]
     me_polys = me.polygons[:]
 
@@ -135,7 +135,12 @@ def mesh_data_lists_from_mesh(me, material_colors):
         l_sta = p.loop_start
         l_len = p.loop_total
         loops_poly = me_loops[l_sta:l_sta + l_len]
-        color_poly = me_loops_color[l_sta:l_sta + l_len]
+
+        if me_loops_color is not None:
+            color_poly = me_loops_color[l_sta:l_sta + l_len]
+        else:
+            color_poly = (1.0, 1.0, 1.0, 1.0)
+
         i0 = 0
         i1 = 1
 
diff --git a/release/datafiles/icons/brush.sculpt.displacement_smear.dat b/release/datafiles/icons/brush.sculpt.displacement_smear.dat
index 5d422130ea3..f53b9519241 100644
Binary files a/release/datafiles/icons/brush.sculpt.displacement_smear.dat and b/release/datafiles/icons/brush.sculpt.displacement_smear.dat differ
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index faf86259837..1474d0eb89b 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -2941,20 +2941,11 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
                 _defs_sculpt.trim_lasso,
             ),
             _defs_sculpt.project_line,
+            _defs_sculpt.mask_by_color,
             None,
             _defs_sculpt.mesh_filter,
             _defs_sculpt.cloth_filter,
-            lambda context: (
-                (_defs_sculpt.color_filter,)
-                if context is None
-                else ()
-            ),
-            None,
-            lambda context: (
-                (_defs_sculpt.mask_by_color,)
-                if context is None
-                else ()
-            ),
+            _defs_sculpt.color_filter,
             None,
             _defs_sculpt.face_set_edit,
             None,
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 43784b5a856..46c1d502164 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -39,7 +39,7 @@ extern "C" {
 
 /* Blender file format version. */
 #define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 2
+#define BLENDER_FILE_SUBVERSION 3
 
 /* Minimum Blender version that supports reading file written with the current
  * version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenkernel/intern/attribute.c b/source/blender/blenkernel/intern/attribute.c
index e4b4728a747..f5f3803e362 100644
--- a/source/blender/blenkernel/intern/attribute.c
+++ b/source/blender/blenkernel/intern/attribute.c
@@ -150,7 +150,6 @@ bool BKE_id_attribute_rename(ID *id,
   return true;
 }
 
-
 typedef struct AttrUniqueData {
   ID *id;
   CustomDataMask mask;
@@ -662,15 +661,15 @@ bool BKE_id_attribute_ref_from_index(ID *id,
     for (int i = 0; i < data->totlayer; i++) {
       CustomDataLayer *layer = data->layers + i;
 
-      if (index == attr_index) {
-        r_ref->domain = domain;
-        r_ref->type = layer->type;
-        BLI_strncpy_utf8(r_ref->name, layer->name, MAX_CUSTOMDATA_LAYER_NAME);
+      if (CD_TYPE_AS_MASK(layer->type) & type_filter) {
+        if (index == attr_index) {
+          r_ref->domain = domain;
+          r_ref->type = layer->type;
+          BLI_strncpy_utf8(r_ref->name, layer->name, MAX_CUSTOMDATA_LAYER_NAME);
 
-        return true;
-      }
+          return true;
+        }
 
-      if (CD_TYPE_AS_MASK(layer->type) & type_filter) {
         index++;
       }
     }
diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index bb7f828f294..dd9fbc5d3f6 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -93,7 +93,10 @@ static void mesh_init_data(ID *id)
   mesh->face_sets_color_seed = BLI_hash_int(PIL_check_seconds_timer_i() & UINT_MAX);
 }
 
-static void mesh_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const int flag)
+static void mesh_copy_data(Main *bmain,
+                                                       ID *id_dst,
+                                                       const ID *id_src,
+                                                       const int flag)
 {
   Mesh *mesh_dst = (Mesh *)id_dst;
   const Mesh *mesh_src = (const Mesh *)id_src;
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 3782893d557..7b796cad0f3 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1823,7 +1823,7 @@ void BKE_sculpt_color_layer_create_if_needed(struct Object *object)
   int types[] = {CD_PROP_COLOR, CD_MLOOPCOL};
   bool has_color = false;
 
-  for (int i = 0; i < 3; i++) {
+  for (int i = 0; i < ARRAY_SIZE(types); i++) {
     bool ok = CustomData_has_layer(&orig_me->vdata, types[i]);
     ok = ok || CustomData_has_layer(&orig_me->ldata, types[i]);
 
diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc
index 391313ef452..bb1257fd468 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc
@@ -23,6 +23,7 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "BKE_object.h"
 #include "BLI_string.h"
 
 #include "extract_mesh.h"
@@ -34,9 +35,9 @@ namespace blender::draw {
  * \{ */
 
 static void extract_vcol_init(const MeshRenderData *mr,
-                              struct MeshBatchCache *cache,
-                              void *buf,
-                              void *UNUSED(tls_data))
+                                          struct MeshBatchCache *cache,
+                                          void *buf,
+                                          void *UNUSED(tls_data))
 {
   GPUVertBuf *vbo = static_cast<GPUVertBuf *>(buf);
   GPUVertFormat format = {0};
@@ -59,10 +60,13 @@ static void extract_vcol_init(const MeshRenderData *mr,
   /* prefer the active attribute to set active color if it's a color layer  */
   if (actlayer && ELEM(actlayer->type, CD_PROP_COLOR, CD_MLOOPCOL) &&
       ELEM(actdomain, ATTR_DOMAIN_POINT, ATTR_DOMAIN_CORNER)) {
+
     CustomData *cdata = actdomain == ATTR_DOMAIN_POINT ? cd_vdata : cd_ldata;
     actn = actlayer - (cdata->layers + cdata->typemap[actlayer->type]);
   }
 
+  CustomDataLayer *render_layer = BKE_id_attributes_render_color_get((ID *)mr->me);
+
   /* set up vbo format */
   for (int i = 0; i < ARRAY_SIZE(vcol_types); i++) {
     int type = vcol_types[i];
@@ -80,7 +84,11 @@ static void extract_vcol_init(const MeshRenderData *mr,
         BLI_snprintf(attr_name, sizeof(attr_name), "c%s", attr_safe_name);
         GPU_vertformat_attr_add(&format, attr_name, GPU_COMP_U16, 4, GPU_FETCH_INT_TO_FLOAT_UNIT);
 
-        if (j == CustomData_get_render_layer(cdata, type)) {
+        int idx = CustomData_get_layer_index_n(cdata, type, j);
+        CustomDataLayer *layer = cdata->layers + idx;
+
+        if (render_layer && layer->type == render_layer->type &&
+            STREQ(layer->name, render_layer->name)) {
           GPU_vertformat_alias_add(&format, "c");
         }
 
diff --git a/source/blender/editors/datafiles/CMakeLists.txt b/source/blender/editors/datafiles/CMakeLists.txt
index 40c96c7b598..b7abadf1b2f 100644
--- a/source/blender/editors/datafiles/CMakeLists.txt
+++ b/source/blender/editors/datafiles/CMakeLists.txt
@@ -750,6 +750,7 @@ set_property(GLOBAL PROPERTY ICON_GEOM_NAMES
   brush.sculpt.cloth
   brush.sculpt.crease
   brush.sculpt.displacement_eraser
+  brush.sculpt.displacement_smear
   brush.sculpt.draw
   brush.sculpt.draw_face_sets
   brush.sculpt.draw_sharp
@@ -762,11 +763,13 @@ set_property(GLOBAL PROPERTY ICON_GEOM_NAMES
   brush.sculpt.mask
   brush.sculpt.multiplane_scrape
   brush.sculpt.nudge
+  brush.sculpt.paint
   brush.sculpt.pinch
   brush.sculpt.pose
   brush.sculpt.rotate
   brush.sculpt.scrape
   brush.sculpt.simplify
+  brush.sculpt.smear
   brush.sculpt.smooth
   brush.sculpt.snake_hook
   brush.sculpt.thumb
@@ -854,12 +857,14 @@ set_property(GLOBAL PROPERTY ICON_GEOM_NAMES
   ops.sculpt.border_mask
   ops.sculpt.box_trim
   ops.sculpt.cloth_filter
+  ops.sculpt.color_filter
   ops.sculpt.face_set_edit
   ops.sculpt.lasso_face_set
   ops.sculpt.lasso_mask
   ops.sculpt.lasso_trim
   ops.sculpt.line_mask
   ops.sculpt.line_project
+  ops.sculpt.mask_by_color
   ops.sculpt.mesh_filter
   ops.sequencer.blade
   ops.transform.bone_envelope



More information about the Bf-blender-cvs mailing list