[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