Commit: 9d34a9d7e59d73509e17e08465add6ea8f446b5b
Author: Campbell Barton
Date:   Thu Feb 28 17:55:49 2019 +1100
Branches: master
https://developer.blender.org/rB9d34a9d7e59d73509e17e08465add6ea8f446b5b

DRW: add back edge highlighting for active face drawing

Removed in aa7b013bd5d24 for performance reasons, however highlights
can't always be seen against specular shading, see: T55456#510873

Instead of having a highlighted inner-edge, use the active edge color.

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

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

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

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c 
b/source/blender/draw/intern/draw_cache_impl_mesh.c
index b19ce76e87b..25dec2b491f 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1507,6 +1507,7 @@ static void mesh_render_data_edge_flag(
 {
        const ToolSettings *ts = rdata->toolsettings;
        const bool is_vertex_select_mode = (ts != NULL) && (ts->selectmode & 
SCE_SELECT_VERTEX) != 0;
+       const bool is_face_only_select_mode = (ts != NULL) && (ts->selectmode 
== SCE_SELECT_FACE);
 
        if (eed == rdata->eed_act) {
                eattr->e_flag |= VFLAG_EDGE_ACTIVE;
@@ -1529,6 +1530,20 @@ static void mesh_render_data_edge_flag(
        if (!BM_elem_flag_test(eed, BM_ELEM_SMOOTH)) {
                eattr->e_flag |= VFLAG_EDGE_SHARP;
        }
+
+       /* Use active edge color for active face edges because
+        * specular highlights make it hard to see T55456#510873.
+        *
+        * This isn't ideal since it can't be used when mixing edge/face modes
+     * but it's still better then not being able to see the active face. */
+       if (is_face_only_select_mode) {
+               if (rdata->efa_act != NULL) {
+                       if (BM_edge_in_face(eed, rdata->efa_act)) {
+                               eattr->e_flag |= VFLAG_EDGE_ACTIVE;
+                       }
+               }
+       }
+
        /* Use a byte for value range */
        if (rdata->cd.offset.crease != -1) {
                float crease = BM_ELEM_CD_GET_FLOAT(eed, 
rdata->cd.offset.crease);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to