[Bf-blender-cvs] [6a8c9ec7633] temp-sculpt-colors: temp-sculpt-colors: Make requested changes

Joseph Eagar noreply at git.blender.org
Sat Jan 29 02:47:18 CET 2022


Commit: 6a8c9ec763375340d795030e9ba00f82f9c27286
Author: Joseph Eagar
Date:   Fri Jan 28 17:47:00 2022 -0800
Branches: temp-sculpt-colors
https://developer.blender.org/rB6a8c9ec763375340d795030e9ba00f82f9c27286

temp-sculpt-colors: Make requested changes

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

M	release/datafiles/locale
M	release/scripts/addons
M	release/scripts/addons_contrib
M	source/blender/blenkernel/BKE_attribute.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/blenloader/intern/versioning_300.c
M	source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
M	source/blender/draw/intern/draw_cache_impl_mesh.c
M	source/blender/draw/intern/mesh_extractors/extract_mesh.h
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc
M	source/blender/editors/geometry/geometry_attributes.cc
M	source/blender/editors/sculpt_paint/sculpt.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
M	source/blender/windowmanager/intern/wm_toolsystem.c
M	source/tools

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

diff --git a/release/datafiles/locale b/release/datafiles/locale
index 620b85f16d0..93612eddc7c 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 620b85f16d03a6aadd7cae56969c9c29b06b992d
+Subproject commit 93612eddc7cdfa82d1e7c31c362df0988388629b
diff --git a/release/scripts/addons b/release/scripts/addons
index 6afec05c328..9207696bbfa 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 6afec05c3286cdea58ab269fb8dd1f5de011de4e
+Subproject commit 9207696bbfac648c299f29f031ab5f18d8fa0077
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 7936dde9ece..61e45814503 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 7936dde9ece881d531b1a2ee6c45ddb56d30038c
+Subproject commit 61e45814503f51963c91c51aaf764612e7c5dc72
diff --git a/source/blender/blenkernel/BKE_attribute.h b/source/blender/blenkernel/BKE_attribute.h
index 80d14fc31cd..ae7eadd7628 100644
--- a/source/blender/blenkernel/BKE_attribute.h
+++ b/source/blender/blenkernel/BKE_attribute.h
@@ -50,7 +50,7 @@ typedef enum AttributeDomain {
   ATTR_DOMAIN_NUM
 } AttributeDomain;
 
-typedef enum {
+typedef enum AttributeDomainMask {
   ATTR_DOMAIN_MASK_POINT = (1 << 0),
   ATTR_DOMAIN_MASK_EDGE = (1 << 1),
   ATTR_DOMAIN_MASK_FACE = (1 << 2),
@@ -63,8 +63,11 @@ typedef enum {
 
 bool BKE_id_attributes_supported(struct ID *id);
 
-/* list_mask restricts unique name check to certain customdata types,
-   if in doubt just pass CD_MASK_PROP_ALL */
+/**  Create a new attribute layer
+ *
+ *   \param list_mask restricts unique name check to certain customdata types,
+ *          if in doubt just pass CD_MASK_PROP_ALL
+ */
 struct CustomDataLayer *BKE_id_attribute_new(struct ID *id,
                                              const char *name,
                                              int type,
@@ -97,9 +100,9 @@ void BKE_id_attributes_active_set(struct ID *id, struct CustomDataLayer *layer);
 int *BKE_id_attributes_active_index_p(struct ID *id);
 
 CustomData *BKE_id_attributes_iterator_next_domain(struct ID *id, struct CustomDataLayer *layers);
-CustomDataLayer *BKE_id_attribute_from_index(const struct ID *id,
-                                             int lookup_index,
-                                             const AttributeDomainMask domain_mask);
+const CustomDataLayer *BKE_id_attribute_from_index(const struct ID *id,
+                                                   int lookup_index,
+                                                   const AttributeDomainMask domain_mask);
 
 struct AttributeRef *BKE_id_attributes_active_color_ref_p(struct ID *id);
 void BKE_id_attributes_active_color_set(struct ID *id, struct CustomDataLayer *active_layer);
diff --git a/source/blender/blenkernel/intern/attribute.c b/source/blender/blenkernel/intern/attribute.c
index 50c69f26537..44e24d53e7f 100644
--- a/source/blender/blenkernel/intern/attribute.c
+++ b/source/blender/blenkernel/intern/attribute.c
@@ -457,9 +457,9 @@ CustomData *BKE_id_attributes_iterator_next_domain(ID *id, CustomDataLayer *laye
   return NULL;
 }
 
-CustomDataLayer *BKE_id_attribute_from_index(const ID *id,
-                                             int lookup_index,
-                                             const AttributeDomainMask domain_mask)
+const CustomDataLayer *BKE_id_attribute_from_index(const ID *id,
+                                                   int lookup_index,
+                                                   const AttributeDomainMask domain_mask)
 {
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(id, info);
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 96d484b7d78..4e6c5ca937c 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1806,11 +1806,10 @@ void BKE_sculpt_color_layer_create_if_needed(struct Object *object)
   bool has_color = false;
 
   for (int i = 0; i < ARRAY_SIZE(types); i++) {
-    bool ok = CustomData_has_layer(&orig_me->vdata, types[i]) ||
-              CustomData_has_layer(&orig_me->ldata, types[i]);
+    has_color = CustomData_has_layer(&orig_me->vdata, types[i]) ||
+                CustomData_has_layer(&orig_me->ldata, types[i]);
 
-    if (ok) {
-      has_color = true;
+    if (has_color) {
       break;
     }
   }
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index 922d8ae7810..e5423043efd 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -1246,28 +1246,21 @@ static int pbvh_get_buffers_update_flags(PBVH *UNUSED(pbvh))
 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);
-  AttributeDomain domain;
 
   if (!layer || !ELEM(layer->type, CD_PROP_COLOR, CD_MLOOPCOL)) {
     return false;
   }
 
-  domain = BKE_id_attribute_domain((ID *)me, layer);
+  AttributeDomain domain = BKE_id_attribute_domain((ID *)me, layer);
 
   if (!ELEM(domain, ATTR_DOMAIN_POINT, ATTR_DOMAIN_CORNER)) {
     return false;
   }
 
-  if (layer) {
-    *r_layer = layer;
-    *r_attr = domain;
+  *r_layer = layer;
+  *r_attr = domain;
 
-    return true;
-  }
-  else {
-    *r_layer = NULL;
-    return false;
-  }
+  return true;
 }
 
 static void pbvh_update_draw_buffer_cb(void *__restrict userdata,
@@ -1337,7 +1330,8 @@ static void pbvh_update_draw_buffer_cb(void *__restrict userdata,
                                      pbvh->face_sets_color_seed,
                                      pbvh->face_sets_color_default,
                                      update_flags);
-      } break;
+        break;
+      }
       case PBVH_BMESH:
         GPU_pbvh_bmesh_buffers_update(node->draw_buffers,
                                       pbvh->bm,
diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index b5a383164aa..071520a068c 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -1,4 +1,4 @@
-/*
+ /*
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
@@ -2373,6 +2373,7 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
     }
   }
 
+  /* rebuild active/render color attribute references*/
   if (!MAIN_VERSION_ATLEAST(bmain, 301, 5)) {
     LISTBASE_FOREACH (Mesh *, me, &bmain->meshes) {
       for (int step = 0; step < 2; step++) {
diff --git a/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c b/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
index ea06e21e26e..5abb69f6955 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
+++ b/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
@@ -459,9 +459,12 @@ MeshRenderData *mesh_render_data_create(Mesh *me,
     mr->edit_bmesh = me->edit_mesh;
     mr->me = (do_final) ? me->edit_mesh->mesh_eval_final : me->edit_mesh->mesh_eval_cage;
 
-    /* needed so correct vcol layer is shown in edit mode */
     mr->me->attributes_active_index = me->attributes_active_index;
 
+    /* needed so correct vcol layer is shown in edit mode */
+    mr->me->attr_color_active = me->attr_color_active;
+    mr->me->attr_color_render = me->attr_color_render;
+
     mr->edit_data = is_mode_active ? mr->me->runtime.edit_data : NULL;
 
     if (mr->edit_data) {
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 5dbeb6a30d5..a68a6188c2c 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -471,29 +471,29 @@ static bool mesh_cd_calc_active_vcol_layer(Mesh *me, DRW_MeshAttributes *attrs_u
   const CustomData *cd_vdata = mesh_cd_vdata_get_from_mesh(me_final);
   const CustomData *cd_ldata = mesh_cd_ldata_get_from_mesh(me_final);
 
-  int type, idx = -1;
+  int type, layer_i = -1;
   AttributeDomain domain;
 
   if (layer && ELEM(layer->type, CD_PROP_COLOR, CD_MLOOPCOL)) {
     domain = BKE_id_attribute_domain((ID *)me, layer);
     type = layer->type;
 
-    idx = CustomData_get_named_layer(
+    layer_i = CustomData_get_named_layer(
         domain == ATTR_DOMAIN_POINT ? cd_vdata : cd_ldata, type, layer->name);
   }
   else {
-    idx = CustomData_get_active_layer(cd_vdata, CD_PROP_COLOR);
+    layer_i = CustomData_get_active_layer(cd_vdata, CD_PROP_COLOR);
     type = CD_PROP_COLOR;
     domain = ATTR_DOMAIN_POINT;
   }
 
-  if (idx != -1) {
+  if (layer_i != -1) {
     if (type != CD_MLOOPCOL) {
-      drw_mesh_attributes_add_request(attrs_used, type, idx, domain);
+      drw_mesh_attributes_add_request(attrs_used, type, layer_i, domain);
     }
   }
 
-  return idx != -1;
+  return layer_i != -1;
 }
 
 static void mesh_cd_calc_active_mloopcol_layer(const Mesh *me, DRW_MeshCDMask *cd_used)
@@ -678,7 +678,7 @@ static DRW_MeshCDMask mesh_cd_calc_used_gpu_layers(const Mesh *me,
             break;
           }
 
-          /* note that attr->type will always be CD_PROP_COLOR event for
+          /* note that attr->type will always be CD_PROP_COLOR even for
              CD_MLOOPCOL layers, see node_shader_gpu_vertex_color in
              node_shader_vertex_color.cc
            */
@@ -729,17 +729,17 @@ static DRW_MeshCDMask mesh_cd_calc_used_gpu_layers(const Mesh *me,
               BLI_strncpy(ref.name, clayer->name, sizeof(ref.name));
               ref.type = clayer->type;
 
-              int idx = (uint)mesh_cd_get_vcol_i(me, cd_vdata, cd_ldata, &ref);
+              int layer_i = mesh_cd_get_vcol_i(cd_vdata, cd_ldata, &ref);
 
-              if (idx >= 0) {
-                cd_used.vcol |= 1UL << (uint)idx;
+              if (layer_i >= 0) {
+                cd_used.vcol |= 1UL << (uint)layer_i;
               }
             }
             else {
-              int idx = (uint

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list