[Bf-blender-cvs] [a703bbb4d71] blender-v2.83-release: Fix T75567: Paint Mode Wireframe Incorrect

Jeroen Bakker noreply at git.blender.org
Thu Apr 16 08:35:36 CEST 2020


Commit: a703bbb4d71c200aa02d7bdc741ad3b5cab38509
Author: Jeroen Bakker
Date:   Tue Apr 14 09:33:15 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rBa703bbb4d71c200aa02d7bdc741ad3b5cab38509

Fix T75567: Paint Mode Wireframe Incorrect

The loop normal VBO is used in two manners. In edit mode to draw the
edge normals. And in paint mode to draw the wireframe. This commit
checks which VBO is needed and build the correct one.

This allows show the wireframe correct in paint mode, when the object is
subdivided.

Reviewed By: Clément Foucault

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

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

M	source/blender/draw/intern/draw_cache_extract_mesh.c

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

diff --git a/source/blender/draw/intern/draw_cache_extract_mesh.c b/source/blender/draw/intern/draw_cache_extract_mesh.c
index fe63dec1294..4c51ed99f2c 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh.c
+++ b/source/blender/draw/intern/draw_cache_extract_mesh.c
@@ -1648,9 +1648,12 @@ static void extract_lnor_hq_loop_mesh(
     normal_float_to_short_v3(&lnor_data->x, mr->poly_normals[p]);
   }
 
-  /* Flag for paint mode overlay. */
-  if (mpoly->flag & ME_HIDE || (mr->extract_type == MR_EXTRACT_MAPPED && (mr->v_origindex) &&
-                                mr->v_origindex[mloop->v] == ORIGINDEX_NONE)) {
+  /* Flag for paint mode overlay.
+   * Only use MR_EXTRACT_MAPPED in edit mode where it is used to display the edge-normals. In paint
+   * mode it will use the unmapped data to draw the wireframe. */
+  if (mpoly->flag & ME_HIDE ||
+      (mr->edit_bmesh && mr->extract_type == MR_EXTRACT_MAPPED && (mr->v_origindex) &&
+       mr->v_origindex[mloop->v] == ORIGINDEX_NONE)) {
     lnor_data->w = -1;
   }
   else if (mpoly->flag & ME_FACE_SEL) {
@@ -1724,9 +1727,12 @@ static void extract_lnor_loop_mesh(
     *lnor_data = GPU_normal_convert_i10_v3(mr->poly_normals[p]);
   }
 
-  /* Flag for paint mode overlay. */
-  if (mpoly->flag & ME_HIDE || (mr->extract_type == MR_EXTRACT_MAPPED && (mr->v_origindex) &&
-                                mr->v_origindex[mloop->v] == ORIGINDEX_NONE)) {
+  /* Flag for paint mode overlay.
+   * Only use MR_EXTRACT_MAPPED in edit mode where it is used to display the edge-normals. In paint
+   * mode it will use the unmapped data to draw the wireframe. */
+  if (mpoly->flag & ME_HIDE ||
+      (mr->edit_bmesh && mr->extract_type == MR_EXTRACT_MAPPED && (mr->v_origindex) &&
+       mr->v_origindex[mloop->v] == ORIGINDEX_NONE)) {
     lnor_data->w = -1;
   }
   else if (mpoly->flag & ME_FACE_SEL) {



More information about the Bf-blender-cvs mailing list