diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl index 8abb6ecc737..e0ec9563ef4 100644 --- a/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_geom.glsl @@ -80,6 +80,12 @@ void main(void) edgeSharpness.x = (forceEdge[0] == 1.0) ? 1.0 : edgeSharpness.x; edgeSharpness.y = (forceEdge[1] == 1.0) ? 1.0 : edgeSharpness.y; edgeSharpness.z = (forceEdge[2] == 1.0) ? 1.0 : edgeSharpness.z; + + do_edge = greaterThan(edgeSharpness, vec3(0.005)); + if (!any(do_edge)) { + /* Don't generate any fragment. */ + return; + } #endif #ifdef SELECT_EDGES diff --git a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl index 828bc551cad..ca077f29abd 100644 --- a/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl +++ b/source/blender/draw/modes/shaders/overlay_face_wireframe_vert.glsl @@ -145,8 +145,6 @@ void main() # ifndef LIGHT_EDGES vec3 nor = get_vertex_nor(v_id[v_n]); # else - p_pos[v_n1] = ModelViewProjectionMatrix * vec4(pos[v_n1], 1.0); - p_pos[v_n2] = ModelViewProjectionMatrix * vec4(pos[v_n2], 1.0); pos[v_n1] = get_vertex_pos(v_id[v_n1]); pos[v_n2] = get_vertex_pos(v_id[v_n2]); @@ -168,6 +166,12 @@ void main() edgeSharpness.y = force_edge.y ? 1.0 : edgeSharpness.y; edgeSharpness.z = force_edge.z ? 1.0 : edgeSharpness.z; + do_edge = greaterThan(edgeSharpness, vec3(0.01)); + if (!any(do_edge)) { + /* Don't generate any fragment. */ + gl_Position = vec4(0.0, 0.0, 0.0, 1.0); + } + vec3 nor = nors[v_n]; # endif