[Bf-blender-cvs] [93b96bab9a5] sculpt-dev: Merge branch 'master' into sculpt-dev
Joseph Eagar
noreply at git.blender.org
Mon Jul 4 08:40:30 CEST 2022
Commit: 93b96bab9a5215847fb2181f5141d493ce355fc0
Author: Joseph Eagar
Date: Sun Jul 3 23:39:50 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rB93b96bab9a5215847fb2181f5141d493ce355fc0
Merge branch 'master' into sculpt-dev
===================================================================
===================================================================
diff --cc .clang-format
index a16a1faa16d,7b8e0ef8eba..3ac4016629e
--- a/.clang-format
+++ b/.clang-format
@@@ -265,7 -265,7 +265,8 @@@ ForEachMacros
- SET_SLOT_PROBING_BEGIN
- MAP_SLOT_PROBING_BEGIN
- VECTOR_SET_SLOT_PROBING_BEGIN
+ - TGSET_ITER
+ - WL_ARRAY_FOR_EACH
StatementMacros:
- PyObject_HEAD
diff --cc release/datafiles/locale
index 71e0f87dd1b,9a85b137951..c15c8b01dcf
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 71e0f87dd1ba4e0ed5f619b031045a428e534230
-Subproject commit 9a85b13795157560b319235c63f5a13b0107ba41
++Subproject commit c15c8b01dcf6ddaa753d04efab8aed9b1c1603da
diff --cc release/scripts/addons
index bcb71eea69a,807a64cdfc5..849e7196eb4
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit bcb71eea69a7b83c44112a5872ccd67cae96ec6f
-Subproject commit 807a64cdfc50de1cfb263f2eb68680feddb66ec7
++Subproject commit 849e7196eb4ee7bc5ca8a5644da49ffbd3ff3c97
diff --cc release/scripts/startup/bl_ui/space_view3d.py
index d3e1dfdda63,5a38c4175a8..09e3552b151
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@@ -6591,16 -6648,30 +6620,39 @@@ class VIEW3D_PT_overlay_sculpt(Panel)
sub.active = sculpt.show_face_sets
row.prop(overlay, "sculpt_mode_face_sets_opacity", text="Face Sets")
+ row = layout.row(align=True)
+ row.prop(overlay, "sculpt_mode_use_face_set_moire")
+
+ if overlay.sculpt_mode_use_face_set_moire:
+ row = layout.row(align=True)
+ row.prop(overlay, "sculpt_mode_face_sets_moire_seed", text="Seed")
+ row.prop(overlay, "sculpt_mode_face_sets_moire_scale", text="Size")
+ row.prop(overlay, "use_sculpt_mode_face_sets_moire", text="Size")
+
+ class VIEW3D_PT_overlay_sculpt_curves(Panel):
+ bl_space_type = 'VIEW_3D'
+ bl_context = ".curves_sculpt"
+ bl_region_type = 'HEADER'
+ bl_parent_id = 'VIEW3D_PT_overlay'
+ bl_label = "Sculpt"
+
+ @classmethod
+ def poll(cls, context):
+ return context.mode == 'SCULPT_CURVES' and (context.object)
+
+ def draw(self, context):
+ layout = self.layout
+ tool_settings = context.tool_settings
+ sculpt = tool_settings.sculpt
+
+ view = context.space_data
+ overlay = view.overlay
+
+ row = layout.row(align=True)
+ row.prop(overlay, "sculpt_mode_mask_opacity", text="Selection Opacity")
+
+
class VIEW3D_PT_overlay_bones(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
diff --cc source/blender/blenkernel/BKE_mesh.h
index 85796adfa01,66e0ff8e81a..4359dface1f
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -54,10 -52,21 +54,22 @@@ extern "C"
# define BKE_MESH_OMP_LIMIT 10000
#endif
+ /* mesh_runtime.cc */
+
+ /**
+ * Call after changing vertex positions to tag lazily calculated caches for recomputation.
+ */
+ void BKE_mesh_tag_coords_changed(struct Mesh *mesh);
+
+ /**
+ * Call after moving every mesh vertex by the same translation.
+ */
+ void BKE_mesh_tag_coords_changed_uniformly(struct Mesh *mesh);
+
/* *** mesh.c *** */
-struct BMesh *BKE_mesh_to_bmesh_ex(const struct Mesh *me,
+struct BMesh *BKE_mesh_to_bmesh_ex(const struct Object *ob,
+ const struct Mesh *me,
const struct BMeshCreateParams *create_params,
const struct BMeshFromMeshParams *convert_params);
struct BMesh *BKE_mesh_to_bmesh(struct Mesh *me,
diff --cc source/blender/blenkernel/BKE_paint.h
index b88e4358352,ffe80ff47b6..2f9740b9c78
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@@ -786,10 -551,8 +786,9 @@@ typedef struct SculptSession
float (*orig_cos)[3]; /* Coords of un-deformed mesh. */
float (*deform_cos)[3]; /* Coords of deformed mesh but without stroke displacement. */
float (*deform_imats)[3][3]; /* Crazy-space deformation matrices. */
+ float *face_areas; /* cached face areas for PBVH_FACES and PBVH_GRIDS */
- /* Used to cache the render of the active texture */
- unsigned int texcache_side, *texcache, texcache_actual;
+ /* Pool for texture evaluations. */
struct ImagePool *tex_pool;
struct StrokeCache *cache;
diff --cc source/blender/blenkernel/CMakeLists.txt
index e54d1480286,50be5b475d4..4bf8f62e40d
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@@ -119,7 -111,7 +119,8 @@@ set(SR
intern/curve_decimate.c
intern/curve_deform.c
intern/curve_eval.cc
+ intern/curvemapping_cache.c
+ intern/curve_legacy_convert.cc
intern/curve_nurbs.cc
intern/curve_poly.cc
intern/curve_to_mesh_convert.cc
diff --cc source/blender/blenkernel/intern/node.cc
index 8e90ad595e1,5be912ffb2b..a6a37f334ee
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@@ -4754,7 -4754,9 +4754,8 @@@ static void registerGeometryNodes(
register_node_type_geo_distribute_points_on_faces();
register_node_type_geo_dual_mesh();
register_node_type_geo_edge_split();
- register_node_type_geo_extrude_mesh();
register_node_type_geo_field_at_index();
+ register_node_type_geo_field_on_domain();
register_node_type_geo_flip_faces();
register_node_type_geo_geometry_to_instance();
register_node_type_geo_image_texture();
diff --cc source/blender/blenkernel/intern/paint.c
index 85500cdb8a7,89cc25b31e6..dfa13e866f0
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@@ -1553,20 -1481,8 +1553,18 @@@ void BKE_sculptsession_free(Object *ob
MEM_SAFE_FREE(ss->vemap);
MEM_SAFE_FREE(ss->vemap_mem);
- MEM_SAFE_FREE(ss->texcache);
-
- if (ss->bm_log) {
- BM_log_free(ss->bm_log);
+ bool SCULPT_attr_release_layer(
+ SculptSession * ss, Object * ob, struct SculptCustomLayer * scl);
+
+ if (ss->layers_to_free) {
+ for (int i = 0; i < ss->tot_layers_to_free; i++) {
+ if (ss->layers_to_free[i]) {
+ SCULPT_attr_release_layer(ss, ob, ss->layers_to_free[i]);
+ // SCULPT_attr_release_layer frees layers_to_free[i] itself
+ }
+ }
+
+ MEM_freeN(ss->layers_to_free);
}
if (ss->tex_pool) {
@@@ -1923,172 -1773,69 +1921,208 @@@ static void sculpt_update_object(Depsgr
}
}
+ int totvert = 0;
+
+ switch (BKE_pbvh_type(pbvh)) {
+ case PBVH_FACES:
+ totvert = me->totvert;
+ break;
+ case PBVH_BMESH:
+ totvert = ss->bm ? ss->bm->totvert : me->totvert;
+ break;
+ case PBVH_GRIDS:
+ totvert = BKE_pbvh_get_grid_num_vertices(ss->pbvh);
+ break;
+ }
+
+ BKE_sculptsession_check_sculptverts(ob->sculpt, pbvh, totvert);
+
+ if (ss->bm && me->key && ob->shapenr != ss->bm->shapenr) {
+ KeyBlock *actkey = BLI_findlink(&me->key->block, ss->bm->shapenr - 1);
+ KeyBlock *newkey = BLI_findlink(&me->key->block, ob->shapenr - 1);
+
+ bool updatePBVH = false;
+
+ if (!actkey) {
+ printf("%s: failed to find active shapekey\n", __func__);
+ if (!ss->bm->shapenr || !CustomData_has_layer(&ss->bm->vdata, CD_SHAPEKEY)) {
+ printf("allocating shapekeys. . .\n");
+
+ // need to allocate customdata for keys
+ for (KeyBlock *key = (KeyBlock *)me->key->block.first; key; key = key->next) {
+
+ int idx = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, key->name);
+
+ if (idx == -1) {
+ BM_data_layer_add_named(ss->bm, &ss->bm->vdata, CD_SHAPEKEY, key->name);
+ BKE_sculptsession_update_attr_refs(ob);
+
+ idx = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, key->name);
+ ss->bm->vdata.layers[idx].uid = key->uid;
+ }
+
+ int cd_shapeco = ss->bm->vdata.layers[idx].offset;
+ BMVert *v;
+ BMIter iter;
+
+ BM_ITER_MESH (v, &iter, ss->bm, BM_VERTS_OF_MESH) {
+ float *keyco = BM_ELEM_CD_GET_VOID_P(v, cd_shapeco);
+
+ copy_v3_v3(keyco, v->co);
+ }
+ }
+ }
+
+ updatePBVH = true;
+ ss->bm->shapenr = ob->shapenr;
+ }
+
+ if (!newkey) {
+ printf("%s: failed to find new active shapekey\n", __func__);
+ }
+
+ if (actkey && newkey) {
+ int cd_co1 = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, actkey->name);
+ int cd_co2 = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, newkey->name);
+
+ BMVert *v;
+ BMIter iter;
+
+ if (cd_co1 == -1) { // non-recoverable error
+ printf("%s: failed to find active shapekey in customdata.\n", __func__);
+ return;
+ }
+ else if (cd_co2 == -1) {
+ printf("%s: failed to find new shapekey in customdata; allocating . . .\n", __func__);
+
+ BM_data_layer_add_named(ss->bm, &ss->bm->vdata, CD_SHAPEKEY, newkey->name);
+ int idx = CustomData_get_named_layer_index(&ss->bm->vdata, CD_SHAPEKEY, newkey->name);
+
+ int cd_co = ss->bm->vdata.layers[idx].offset;
+ ss->bm->vdata.layers[idx].uid = newkey->uid;
+
+ BKE_sculptsession_update_attr_refs(ob);
+
+ BM_ITER_MESH (v, &iter, ss->bm, BM_VERTS_OF_MESH) {
+ float *keyco = BM_ELEM_CD_GET_VOID_P(v, cd_co);
+ copy_v3_v3(keyco, v->co);
+ }
+
+ cd_co2 = idx;
+ }
+
+ cd_co1 = ss->bm->vdata.layers[cd_co1].offset;
+ cd_co2 = ss->bm->vdata.layers[cd_co2].offset;
+
+ BM_ITER_MESH (v, &iter, ss->bm, BM_VERTS_OF_MESH) {
+ float *co1 = BM_ELEM_CD_GET_VOID_P(v, cd_co1);
+ float *co2 = BM_ELEM_CD_GET_VOID_P(v, cd_co2);
+
+ copy_v3_v3(co1, v->co);
+ copy_v3_v3(v->co, co2);
+ }
+
+ ss->bm->shapenr = ob->shapenr;
+
+ updatePBVH = true;
+ }
+
+ if (updatePBVH && ss->pbvh) {
+ PBVHNode **nodes;
+ int
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list