Add draw-range behaviour to legacy-mode shaders.

This commit is contained in:
Remco Burema 2021-11-08 21:39:12 +01:00
parent f486177465
commit 51c5572f0f
No known key found for this signature in database
GPG key ID: 215C49431D43F98C
2 changed files with 28 additions and 0 deletions

View file

@ -13,9 +13,11 @@ vertex =
attribute highp vec4 a_vertex;
attribute lowp vec4 a_color;
attribute lowp vec4 a_material_color;
attribute highp float a_vertex_index;
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
void main()
{
@ -28,6 +30,7 @@ vertex =
}
v_line_type = a_line_type;
v_vertex_index = a_vertex_index;
}
fragment =
@ -40,14 +43,21 @@ fragment =
#endif // GL_ES
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform highp vec2 u_drawRange;
void main()
{
if (u_drawRange.x >= 0 && u_drawRange.y >= 0 && (v_vertex_index < u_drawRange.x || v_vertex_index > u_drawRange.y))
{
discard;
}
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9
// discard movements
discard;
@ -88,10 +98,13 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1, -1]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -99,3 +112,4 @@ a_color = color
a_extruder = extruder
a_line_type = line_type
a_material_color = material_color
a_vertex_index = vertex_index

View file

@ -13,9 +13,11 @@ vertex =
attribute highp vec4 a_vertex;
attribute lowp vec4 a_color;
attribute lowp vec4 a_material_color;
attribute highp float a_vertex_index;
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
void main()
{
@ -28,6 +30,7 @@ vertex =
// }
v_line_type = a_line_type;
v_vertex_index = a_vertex_index;
}
fragment =
@ -40,14 +43,21 @@ fragment =
#endif // GL_ES
varying lowp vec4 v_color;
varying float v_line_type;
varying highp float v_vertex_index;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
uniform highp vec2 u_drawRange;
void main()
{
if (u_drawRange.x >= 0 && u_drawRange.y >= 0 && (v_vertex_index < u_drawRange.x || v_vertex_index > u_drawRange.y))
{
discard;
}
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5))
{ // actually, 8 and 9
// discard movements
@ -92,10 +102,13 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1, -1]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -103,3 +116,4 @@ a_color = color
a_extruder = extruder
a_line_type = line_type
a_material_color = material_color
a_vertex_index = vertex_index