From 23c24cead582f8d766e87ba9adc0f612b16bceea Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Wed, 13 Jun 2018 08:17:14 +0200 Subject: T55456: EditMode Drawing - Hide facedots, except when in V3D_ZBUF_SELECT mode `use_occluded_geometry` - Different theme (wire_inactive) when not in edge selection mode --- source/blender/draw/modes/shaders/common_globals_lib.glsl | 1 + .../blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl | 2 +- source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl | 6 ++++-- source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl | 4 ++++ source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl | 4 ++++ 5 files changed, 14 insertions(+), 3 deletions(-) (limited to 'source/blender/draw/modes/shaders') diff --git a/source/blender/draw/modes/shaders/common_globals_lib.glsl b/source/blender/draw/modes/shaders/common_globals_lib.glsl index c55457bb6d2..f8a8f3b9203 100644 --- a/source/blender/draw/modes/shaders/common_globals_lib.glsl +++ b/source/blender/draw/modes/shaders/common_globals_lib.glsl @@ -2,6 +2,7 @@ /* keep in sync with GlobalsUboStorage */ layout(std140) uniform globalsBlock { vec4 colorWire; + vec4 colorWireInactive; vec4 colorWireEdit; vec4 colorActive; vec4 colorSelect; diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl index 07b36079884..71cc1ccde8d 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_facedot_frag.glsl @@ -11,7 +11,7 @@ void main() if (isSelected != 0) FragColor = colorFaceDot; else - FragColor = colorWireEdit; + FragColor = colorVertex; #ifdef VERTEX_FACING FragColor.a *= 1.0 - abs(facing) * 0.4; diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl index cf1051b70b3..4bf5f348c27 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl @@ -10,7 +10,6 @@ * TODO Refine the range to only affect GPUs. */ uniform float faceAlphaMod; - flat in vec3 edgesCrease; flat in vec3 edgesBweight; flat in vec4 faceColor; @@ -181,10 +180,13 @@ void main() #ifdef VERTEX_SELECTION colorDistEdge(vec4(vertexColor, 1.0), innerEdge); #else +# ifdef EDGE_SELECTION vec4 inner_edge_color = colorWireEdit; inner_edge_color = ((flag[v] & EDGE_SELECTED) != 0) ? colorEdgeSelect : inner_edge_color; inner_edge_color = ((flag[v] & EDGE_ACTIVE) != 0) ? vec4(colorEditMeshActive.xyz, 1.0) : inner_edge_color; - +# else + vec4 inner_edge_color = colorWireInactive; +# endif colorDistEdge(inner_edge_color, innerEdge); #endif } diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl index 77bc8a25695..6702722e61f 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl @@ -76,7 +76,11 @@ vec3 getVertexColor(int v) if ((vData[v].x & (VERTEX_ACTIVE | VERTEX_SELECTED)) != 0) return colorEdgeSelect.rgb; else +#ifdef EDGE_SELECTION return colorWireEdit.rgb; +#else + return colorWireInactive.rgb; +#endif } void doVertex(int v, vec4 pos) diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl index d9c902697b6..a22cc56c74f 100644 --- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl +++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl @@ -95,7 +95,11 @@ vec3 getVertexColor(int v) if ((vData[v].x & (VERTEX_ACTIVE | VERTEX_SELECTED)) != 0) return colorEdgeSelect.rgb; else +#ifdef EDGE_SELECTION return colorWireEdit.rgb; +#else + return colorWireInactive.rgb; +#endif } vec4 getClipData(vec2 pos[3], ivec2 vidx) -- cgit v1.2.3