[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