[Bf-blender-cvs] [9d34a9d7e59] master: DRW: add back edge highlighting for active face drawing

Campbell Barton noreply at git.blender.org
Thu Feb 28 08:05:14 CET 2019


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);



More information about the Bf-blender-cvs mailing list