[Bf-blender-cvs] [54b3168c4ad] master: Fix T77424 Overlay: Editmode: Issue with multi edit and in-front option

Clément Foucault noreply at git.blender.org
Wed Aug 12 19:57:36 CEST 2020


Commit: 54b3168c4ad07bb2d3c7aade342b45c0dec34181
Author: Clément Foucault
Date:   Wed Aug 12 19:57:08 2020 +0200
Branches: master
https://developer.blender.org/rB54b3168c4ad07bb2d3c7aade342b45c0dec34181

Fix T77424 Overlay: Editmode: Issue with multi edit and in-front option

This is a nice addition to the refactor. Now any combination of in-front
/ not in-front will work in non x-ray edit mode.

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

M	source/blender/draw/engines/overlay/overlay_edit_mesh.c
M	source/blender/draw/engines/overlay/overlay_private.h

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

diff --git a/source/blender/draw/engines/overlay/overlay_edit_mesh.c b/source/blender/draw/engines/overlay/overlay_edit_mesh.c
index ebc8a2f97ef..728b3d510fa 100644
--- a/source/blender/draw/engines/overlay/overlay_edit_mesh.c
+++ b/source/blender/draw/engines/overlay/overlay_edit_mesh.c
@@ -75,8 +75,6 @@ void OVERLAY_edit_mesh_cache_init(OVERLAY_Data *vedata)
   bool show_face_dots = (v3d->overlay.edit_flag & V3D_OVERLAY_EDIT_FACE_DOT) != 0 ||
                         pd->edit_mesh.do_zbufclip;
 
-  pd->edit_mesh.ghost_ob = 0;
-  pd->edit_mesh.edit_ob = 0;
   pd->edit_mesh.do_faces = true;
   pd->edit_mesh.do_edges = true;
 
@@ -312,9 +310,6 @@ void OVERLAY_edit_mesh_cache_populate(OVERLAY_Data *vedata, Object *ob)
     overlay_edit_mesh_add_ob_to_pass(pd, ob, do_in_front);
   }
 
-  pd->edit_mesh.ghost_ob += (ob->dtx & OB_DRAW_IN_FRONT) ? 1 : 0;
-  pd->edit_mesh.edit_ob += 1;
-
   if (DRW_state_show_text() && (pd->edit_mesh.flag & OVERLAY_EDIT_TEXT)) {
     const DRWContextState *draw_ctx = DRW_context_state_get();
     DRW_text_edit_mesh_measure_stats(draw_ctx->region, draw_ctx->v3d, ob, &draw_ctx->scene->unit);
@@ -375,18 +370,11 @@ void OVERLAY_edit_mesh_draw(OVERLAY_Data *vedata)
     DRW_draw_pass(psl->edit_mesh_verts_ps[NOT_IN_FRONT]);
   }
   else {
-    const DRWContextState *draw_ctx = DRW_context_state_get();
-    View3D *v3d = draw_ctx->v3d;
-
     DRW_draw_pass(psl->edit_mesh_normals_ps);
     overlay_edit_mesh_draw_components(psl, pd, false);
 
-    if (!DRW_state_is_depth() && v3d->shading.type == OB_SOLID && pd->edit_mesh.ghost_ob == 1 &&
-        pd->edit_mesh.edit_ob == 1) {
-      /* In the case of single ghost object edit (common case for retopology):
-       * we clear the depth buffer so that only the depth of the retopo mesh
-       * is occluding the edit cage. */
-      GPU_framebuffer_clear_depth(fbl->overlay_default_fb, 1.0f);
+    if (DRW_state_is_fbo()) {
+      GPU_framebuffer_bind(fbl->overlay_in_front_fb);
     }
 
     if (!DRW_pass_is_empty(psl->edit_mesh_depth_ps[IN_FRONT])) {
diff --git a/source/blender/draw/engines/overlay/overlay_private.h b/source/blender/draw/engines/overlay/overlay_private.h
index a8ac2616c02..7e93382796f 100644
--- a/source/blender/draw/engines/overlay/overlay_private.h
+++ b/source/blender/draw/engines/overlay/overlay_private.h
@@ -306,8 +306,6 @@ typedef struct OVERLAY_PrivateData {
     float overlay_color[4];
   } edit_text;
   struct {
-    int ghost_ob;
-    int edit_ob;
     bool do_zbufclip;
     bool do_faces;
     bool do_edges;



More information about the Bf-blender-cvs mailing list