[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