Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-05-24 21:11:06 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-24 21:21:55 +0300
commit203f9a49e29c82458a49efe856eb58f938eb537b (patch)
tree9b2fd6a87efd3a68ce2b665976cbadd7c4abf766 /source/blender/draw
parent76019139f620a41839860e27abf9f02f9a7bc28b (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/blender/draw')
-rw-r--r--source/blender/draw/modes/edit_mesh_mode.c4
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl19
2 files changed, 11 insertions, 12 deletions
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;
}