[Bf-blender-cvs] [0eb7bb98ec7] temp-sculpt-colors: temp-sculpt-colors: fix bug in last commit

Joseph Eagar noreply at git.blender.org
Sat Feb 12 16:52:01 CET 2022


Commit: 0eb7bb98ec7ddee94fa08496933170bd8a70ccab
Author: Joseph Eagar
Date:   Sat Feb 12 07:51:34 2022 -0800
Branches: temp-sculpt-colors
https://developer.blender.org/rB0eb7bb98ec7ddee94fa08496933170bd8a70ccab

temp-sculpt-colors: fix bug in last commit

Got ordering of color attributes wrong
in one place.

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

M	source/blender/blenkernel/intern/attribute.c
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_vcol.cc

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

diff --git a/source/blender/blenkernel/intern/attribute.c b/source/blender/blenkernel/intern/attribute.c
index f7f98059199..036d42e46c0 100644
--- a/source/blender/blenkernel/intern/attribute.c
+++ b/source/blender/blenkernel/intern/attribute.c
@@ -575,23 +575,23 @@ void BKE_id_attribute_subset_active_set(ID *id,
   get_domains(id, info);
 
   for (int i = 0; i < ATTR_DOMAIN_NUM; i++) {
-    if (!((1 << domains[i]) & domain_mask) || !info[domains[i]].customdata) {
+    AttributeDomainMask domain_mask2 = (AttributeDomainMask)(1 << domains[i]);
+
+    if (!(domain_mask2 & domain_mask) || !info[domains[i]].customdata) {
       continue;
     }
 
     CustomData *cdata = info[domains[i]].customdata;
 
     for (int j = 0; j < cdata->totlayer; j++) {
-      CustomDataLayer *layer = cdata->layers + j;
+      CustomDataLayer *layer2 = cdata->layers + j;
 
-      if (!(CD_TYPE_AS_MASK(layer->type) & mask) ||
-          (CD_TYPE_AS_MASK(layer->type) & CD_FLAG_TEMPORARY)) {
+      if (!(CD_TYPE_AS_MASK(layer2->type) & mask) ||
+          (CD_TYPE_AS_MASK(layer2->type) & CD_FLAG_TEMPORARY)) {
         continue;
       }
 
-      if (layer->flag & active_flag) {
-        layer->flag &= ~active_flag;
-      }
+      layer2->flag &= ~active_flag;
     }
   }
 
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 856444a7f2f..b0bdf45346d 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
@@ -32,17 +32,20 @@ static blender::Vector<VColRef> get_vcol_refs(const CustomData *cd_vdata,
   blender::Vector<VColRef> refs;
   uint layeri = 0;
 
-  auto buildList = [&](const CustomData *cdata, CustomDataType type, AttributeDomain domain) {
-    int i = cdata->typemap[(int)type];
+  auto buildList = [&](const CustomData *cdata, AttributeDomain domain) {
+    for (int i=0; i<cdata->totlayer; i++) {
+      const CustomDataLayer *layer = cdata->layers + i;
 
-    if (i == -1) {
-      return;
-    }
+      if (!(CD_TYPE_AS_MASK(layer->type) & CD_MASK_COLOR_ALL)) {
+        continue;
+      }
 
-    for (; i < cdata->totlayer && (CustomDataType)cdata->layers[i].type == type; i++, layeri++) {
-      const CustomDataLayer *layer = cdata->layers + i;
+      if (!(vcol_layers & (1UL << layeri))) {
+        layeri++;
+        continue;
+      }
 
-      if (!(vcol_layers & (1UL << layeri)) || (layer->flag & CD_FLAG_TEMPORARY)) {
+      if (layer->flag & CD_FLAG_TEMPORARY) {
         continue;
       }
 
@@ -51,13 +54,12 @@ static blender::Vector<VColRef> get_vcol_refs(const CustomData *cd_vdata,
       ref.layer = layer;
 
       refs.append(ref);
+      layeri++;
     }
   };
 
-  buildList(cd_vdata, CD_PROP_COLOR, ATTR_DOMAIN_POINT);
-  buildList(cd_vdata, CD_MLOOPCOL, ATTR_DOMAIN_POINT);
-  buildList(cd_ldata, CD_PROP_COLOR, ATTR_DOMAIN_CORNER);
-  buildList(cd_ldata, CD_MLOOPCOL, ATTR_DOMAIN_CORNER);
+  buildList(cd_vdata, ATTR_DOMAIN_POINT);
+  buildList(cd_ldata, ATTR_DOMAIN_CORNER);
 
   return refs;
 }



More information about the Bf-blender-cvs mailing list