[Bf-blender-cvs] [be4b3c64ad7] blender-v2.83-release: Fix T74694: Sculpt Mask Influences Weight/Vertex Paint Drawing

Jeroen Bakker noreply at git.blender.org
Tue May 12 16:22:17 CEST 2020


Commit: be4b3c64ad76a4bf12ac1cbcd948f8d9bc7be20e
Author: Jeroen Bakker
Date:   Tue May 12 13:59:16 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rBbe4b3c64ad76a4bf12ac1cbcd948f8d9bc7be20e

Fix T74694: Sculpt Mask Influences Weight/Vertex Paint Drawing

Sculpt overlay assumed that the sculpt session was always in sculpt
mode. But the sculpt session was also used for Vertex/Weight painting.
This resulted that when a mask was defined in the sculpt mode this
resulted into render artifacts.

This patch adds a check to see if the object has a sculpt session for
OB_MODE_SCULPT.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D7704

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

M	source/blender/blenkernel/BKE_paint.h
M	source/blender/draw/engines/overlay/overlay_engine.c

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

diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index 7822f285c3b..a354cb52f59 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -402,7 +402,7 @@ typedef struct SculptSession {
     /* TODO: identify sculpt-only fields */
     // struct { ... } sculpt;
   } mode;
-  int mode_type;
+  eObjectMode mode_type;
 
   /* This flag prevents PBVH from being freed when creating the vp_handle for texture paint. */
   bool building_vp_handle;
diff --git a/source/blender/draw/engines/overlay/overlay_engine.c b/source/blender/draw/engines/overlay/overlay_engine.c
index 395ea9f9a8f..e875f2c8291 100644
--- a/source/blender/draw/engines/overlay/overlay_engine.c
+++ b/source/blender/draw/engines/overlay/overlay_engine.c
@@ -30,6 +30,7 @@
 #include "ED_view3d.h"
 
 #include "BKE_object.h"
+#include "BKE_paint.h"
 
 #include "overlay_engine.h"
 #include "overlay_private.h"
@@ -237,7 +238,8 @@ static void OVERLAY_cache_populate(void *vedata, Object *ob)
   const bool in_particle_edit_mode = ob->mode == OB_MODE_PARTICLE_EDIT;
   const bool in_paint_mode = (ob == draw_ctx->obact) &&
                              (draw_ctx->object_mode & OB_MODE_ALL_PAINT);
-  const bool in_sculpt_mode = (ob == draw_ctx->obact) && (ob->sculpt != NULL);
+  const bool in_sculpt_mode = (ob == draw_ctx->obact) && (ob->sculpt != NULL) &&
+                              (ob->sculpt->mode_type == OB_MODE_SCULPT);
   const bool has_surface = ELEM(ob->type,
                                 OB_MESH,
                                 OB_CURVE,



More information about the Bf-blender-cvs mailing list