Wireframe: Optimization: Output degenerate triangles if no edges

This commit is contained in:
Clément Foucault
2018-12-04 01:16:13 +01:00
parent 6a0c25b447
commit 89ef69d23c
2 changed files with 12 additions and 2 deletions

View File

@@ -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

View File

@@ -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