diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-24 21:11:06 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-24 21:21:55 +0300 |
commit | 203f9a49e29c82458a49efe856eb58f938eb537b (patch) | |
tree | 9b2fd6a87efd3a68ce2b665976cbadd7c4abf766 /source | |
parent | 76019139f620a41839860e27abf9f02f9a7bc28b (diff) |
Edit Mesh: Change color behavior
- Make edges darker in vert & face select mode (making more
contrast to not loose the topology). Downside is less select
edges visibility in vertex mode. But I'm confident that it's not
as painfull as it seems.
- Make select faces less saturated to have more color contrast
between select faces and edges.
- Make unselected faces white to increase contrast with faces and
edges. The brightening is negligeable for bright surfaces and
help readability on darker surfaces. Reminder that if the faces
overlays are too distracting (i.e: uv mapping, or texturing) they
can be toggled off in the overlay panel.
Reviewers: billreynish, campbellbarton, brecht
Reviewed By: billreynish, campbellbarton, brecht
Subscribers: brecht
Differential Revision: https://developer.blender.org/D4941
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenloader/intern/versioning_defaults.c | 2 | ||||
-rw-r--r-- | source/blender/draw/modes/edit_mesh_mode.c | 4 | ||||
-rw-r--r-- | source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl | 19 |
3 files changed, 13 insertions, 12 deletions
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 61434fce2ae..fdeb2997b05 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -191,6 +191,8 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template) v3d->overlay.texture_paint_mode_opacity = 1.0f; v3d->overlay.weight_paint_mode_opacity = 1.0f; v3d->overlay.vertex_paint_mode_opacity = 1.0f; + /* Use dimmed selected edges. */ + v3d->overlay.edit_flag &= ~V3D_OVERLAY_EDIT_EDGES; /* grease pencil settings */ v3d->vertex_opacity = 1.0f; v3d->gp_flag |= V3D_GP_SHOW_EDIT_LINES; diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c index 2b17dd43ee5..b02625db3b6 100644 --- a/source/blender/draw/modes/edit_mesh_mode.c +++ b/source/blender/draw/modes/edit_mesh_mode.c @@ -373,9 +373,8 @@ static DRWPass *edit_mesh_create_overlay_pass(float *face_alpha, DRW_shgroup_uniform_vec2(grp, "viewportSize", DRW_viewport_size_get(), 1); DRW_shgroup_uniform_vec2(grp, "viewportSizeInv", DRW_viewport_invert_size_get(), 1); DRW_shgroup_uniform_ivec4(grp, "dataMask", data_mask, 1); - DRW_shgroup_uniform_bool_copy(grp, "doEdges", do_edges); DRW_shgroup_uniform_float_copy(grp, "ofs", depth_ofs); - DRW_shgroup_uniform_bool_copy(grp, "selectEdges", select_edge); + DRW_shgroup_uniform_bool_copy(grp, "selectEdges", do_edges || select_edge); DRW_shgroup_state_enable(grp, DRW_STATE_OFFSET_NEGATIVE); /* To match blender loop structure. */ @@ -455,7 +454,6 @@ static void EDIT_MESH_cache_init(void *vedata) } if ((v3d->overlay.edit_flag & V3D_OVERLAY_EDIT_EDGES) == 0) { if ((tsettings->selectmode & SCE_SELECT_EDGE) == 0) { - stl->g_data->data_mask[1] &= ~(VFLAG_EDGE_ACTIVE & VFLAG_EDGE_SELECTED); stl->g_data->do_edges = false; } } diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl index 7d4cba66933..6aa20a9d21b 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl @@ -1,5 +1,4 @@ -uniform bool doEdges = true; uniform bool selectFaces = true; uniform bool selectEdges = true; @@ -17,21 +16,23 @@ vec4 EDIT_MESH_edge_color_outer(int edge_flag, int face_flag, float crease, floa vec4 EDIT_MESH_edge_color_inner(int edge_flag) { vec4 color = colorWireEdit; - vec4 color_select = (selectEdges) ? colorEdgeSelect : colorFaceSelect; - color = (doEdges && ((edge_flag & EDGE_SELECTED) != 0)) ? color_select : color; - color = (doEdges && ((edge_flag & EDGE_ACTIVE) != 0)) ? colorEditMeshActive : color; + vec4 color_select = (selectEdges) ? colorEdgeSelect : mix(colorEdgeSelect, colorWireEdit, .45); + color = ((edge_flag & EDGE_SELECTED) != 0) ? color_select : color; + color = ((edge_flag & EDGE_ACTIVE) != 0) ? colorEditMeshActive : color; - float non_edge_select_alpha = (selectFaces && (edge_flag & EDGE_SELECTED) != 0) ? 0.75 : 0.4; - color.a = (selectEdges) ? 1.0 : non_edge_select_alpha; + color.a = (selectEdges || (edge_flag & (EDGE_SELECTED | EDGE_ACTIVE)) != 0) ? 1.0 : 0.4; return color; } vec4 EDIT_MESH_edge_vertex_color(int vertex_flag) { vec4 color = colorWireEdit; - vec4 color_select = (selectEdges) ? colorEdgeSelect : colorFaceSelect; - color = (doEdges && (vertex_flag & (VERT_ACTIVE | VERT_SELECTED)) != 0) ? color_select : color; - color.a = (selectEdges) ? 1.0 : 0.4; + vec4 color_select = (selectEdges) ? colorEdgeSelect : mix(colorEdgeSelect, colorWireEdit, .45); + + bool edge_selected = (vertex_flag & (VERT_ACTIVE | VERT_SELECTED)) != 0; + color = (edge_selected) ? color_select : color; + + color.a = (selectEdges || edge_selected) ? 1.0 : 0.4; return color; } |