Revert "Merge branch 'bremco-graphics_buffer_update'"

This reverts commit 5e60cc6208, reversing
changes made to c9feace0fb.
This commit is contained in:
Ghostkeeper 2021-12-08 12:02:49 +01:00
parent 0da37ae6e7
commit 41ebd593c5
No known key found for this signature in database
GPG key ID: D2A8871EE34EC59A
8 changed files with 152 additions and 124 deletions

View file

@ -142,7 +142,6 @@ class SimulationPass(RenderPass):
if self._layer_view._current_layer_num > -1 and ((not self._layer_view._only_show_top_layers) or (not self._layer_view.getCompatibilityMode())):
start = 0
end = 0
current_polygon_offset = 0
element_counts = layer_data.getElementCounts()
for layer in sorted(element_counts.keys()):
# In the current layer, we show just the indicated paths
@ -156,25 +155,18 @@ class SimulationPass(RenderPass):
if index >= polygon.data.size // 3 - offset:
index -= polygon.data.size // 3 - offset
offset = 1 # This is to avoid the first point when there is more than one polygon, since has the same value as the last point in the previous polygon
current_polygon_offset += 1
continue
# The head position is calculated and translated
head_position = Vector(polygon.data[index+offset][0], polygon.data[index+offset][1], polygon.data[index+offset][2]) + node.getWorldPosition()
break
break
end += layer_data.getLayer(layer).vertexCount
if layer < self._layer_view._minimum_layer_num:
start = end
if self._layer_view._minimum_layer_num > layer:
start += element_counts[layer]
end += element_counts[layer]
# Calculate the range of paths in the last layer. -- The type-change count is needed to keep the
# vertex-indices aligned between the two different ways we represent polygons here.
# Since there is one type per line, that could give a vertex two different types, if it's a vertex
# where a type-chage occurs. However, the shader expects vertices to have only one type. In order to
# fix this, those vertices are duplicated. This introduces a discrepancy that we have to take into
# account, which is done by the type-change-count.
type_change_count = layer_data.getLayer(self._layer_view._current_layer_num).lineMeshCumulativeTypeChangeCount(max(self._layer_view._current_path_num - 1, 0))
# Calculate the range of paths in the last layer
current_layer_start = end
current_layer_end = current_layer_start + self._layer_view._current_path_num + current_polygon_offset + type_change_count
current_layer_end = end + self._layer_view._current_path_num * 2 # Because each point is used twice
# This uses glDrawRangeElements internally to only draw a certain range of lines.
# All the layers but the current selected layer are rendered first

View file

@ -13,11 +13,9 @@ 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()
{
@ -30,7 +28,6 @@ vertex =
}
v_line_type = a_line_type;
v_vertex_index = a_vertex_index;
}
fragment =
@ -43,21 +40,14 @@ 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.0 && u_drawRange.y >= 0.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;
@ -87,6 +77,77 @@ fragment =
gl_FragColor = v_color;
}
vertex41core =
#version 410
uniform highp mat4 u_modelMatrix;
uniform highp mat4 u_viewMatrix;
uniform highp mat4 u_projectionMatrix;
uniform lowp float u_active_extruder;
uniform lowp float u_shade_factor;
uniform highp int u_layer_view_type;
in highp float a_extruder;
in highp float a_line_type;
in highp vec4 a_vertex;
in lowp vec4 a_color;
in lowp vec4 a_material_color;
out lowp vec4 v_color;
out float v_line_type;
void main()
{
gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex;
v_color = a_color;
if ((a_line_type != 8) && (a_line_type != 9)) {
v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a);
}
v_line_type = a_line_type;
}
fragment41core =
#version 410
in lowp vec4 v_color;
in float v_line_type;
out vec4 frag_color;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
void main()
{
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9
// discard movements
discard;
}
// helpers: 4, 5, 7, 10
if ((u_show_helpers == 0) && (
((v_line_type >= 3.5) && (v_line_type <= 4.5)) ||
((v_line_type >= 6.5) && (v_line_type <= 7.5)) ||
((v_line_type >= 9.5) && (v_line_type <= 10.5)) ||
((v_line_type >= 4.5) && (v_line_type <= 5.5))
)) {
discard;
}
// skin: 1, 2, 3
if ((u_show_skin == 0) && (
(v_line_type >= 0.5) && (v_line_type <= 3.5)
)) {
discard;
}
// infill:
if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) {
// discard movements
discard;
}
frag_color = v_color;
}
[defaults]
u_active_extruder = 0.0
u_shade_factor = 0.60
@ -98,13 +159,10 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -112,4 +170,3 @@ a_color = color
a_extruder = extruder
a_line_type = line_type
a_material_color = material_color
a_vertex_index = vertex_index

View file

@ -27,7 +27,6 @@ vertex41core =
in highp float a_extruder;
in highp float a_prev_line_type;
in highp float a_line_type;
in highp float a_vertex_index;
in highp float a_feedrate;
in highp float a_thickness;
@ -38,9 +37,8 @@ vertex41core =
out lowp vec2 v_line_dim;
out highp int v_extruder;
out highp mat4 v_extruder_opacity;
out highp float v_prev_line_type;
out highp float v_line_type;
out highp float v_index;
out float v_prev_line_type;
out float v_line_type;
out lowp vec4 f_color;
out highp vec3 f_vertex;
@ -170,7 +168,6 @@ vertex41core =
v_extruder = int(a_extruder);
v_prev_line_type = a_prev_line_type;
v_line_type = a_line_type;
v_index = a_vertex_index;
v_extruder_opacity = u_extruder_opacity;
// for testing without geometry shader
@ -194,8 +191,6 @@ geometry41core =
uniform int u_show_infill;
uniform int u_show_starts;
uniform highp vec2 u_drawRange;
layout(lines) in;
layout(triangle_strip, max_vertices = 40) out;
@ -207,7 +202,6 @@ geometry41core =
in mat4 v_extruder_opacity[];
in float v_prev_line_type[];
in float v_line_type[];
in float v_index[];
out vec4 f_color;
out vec3 f_normal;
@ -237,10 +231,6 @@ geometry41core =
float size_x;
float size_y;
if (u_drawRange[0] >= 0.0 && u_drawRange[1] >= 0.0 && (v_index[0] < u_drawRange[0] || v_index[0] >= u_drawRange[1]))
{
return;
}
if ((v_extruder_opacity[0][int(mod(v_extruder[0], 4))][v_extruder[0] / 4] == 0.0) && (v_line_type[0] != 8) && (v_line_type[0] != 9)) {
return;
}
@ -437,15 +427,12 @@ u_max_feedrate = 1
u_min_thickness = 0
u_max_thickness = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_normalMatrix = normal_matrix
u_lightPosition = light_0_position
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -458,4 +445,3 @@ a_prev_line_type = prev_line_type
a_line_type = line_type
a_feedrate = feedrate
a_thickness = thickness
a_vertex_index = vertex_index

View file

@ -18,7 +18,6 @@ vertex41core =
in highp vec2 a_line_dim; // line width and thickness
in highp float a_extruder;
in highp float a_line_type;
in highp float a_vertex_index;
out lowp vec4 v_color;
@ -27,8 +26,7 @@ vertex41core =
out lowp vec2 v_line_dim;
out highp int v_extruder;
out highp mat4 v_extruder_opacity;
out highp float v_line_type;
out highp float v_index;
out float v_line_type;
out lowp vec4 f_color;
out highp vec3 f_vertex;
@ -49,7 +47,6 @@ vertex41core =
v_line_dim = a_line_dim;
v_extruder = int(a_extruder);
v_line_type = a_line_type;
v_index = a_vertex_index;
v_extruder_opacity = u_extruder_opacity;
// for testing without geometry shader
@ -70,8 +67,6 @@ geometry41core =
uniform int u_show_skin;
uniform int u_show_infill;
uniform highp vec2 u_drawRange;
layout(lines) in;
layout(triangle_strip, max_vertices = 26) out;
@ -82,7 +77,6 @@ geometry41core =
in int v_extruder[];
in mat4 v_extruder_opacity[];
in float v_line_type[];
in float v_index[];
out vec4 f_color;
out vec3 f_normal;
@ -112,10 +106,6 @@ geometry41core =
float size_x;
float size_y;
if (u_drawRange[0] >= 0.0 && u_drawRange[1] >= 0.0 && (v_index[0] < u_drawRange[0] || v_index[0] >= u_drawRange[1]))
{
return;
}
if ((v_extruder_opacity[0][int(mod(v_extruder[0], 4))][v_extruder[0] / 4] == 0.0) && (v_line_type[0] != 8) && (v_line_type[0] != 9)) {
return;
}
@ -278,15 +268,12 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_normalMatrix = normal_matrix
u_lightPosition = light_0_position
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -297,4 +284,3 @@ a_line_dim = line_dim
a_extruder = extruder
a_material_color = material_color
a_line_type = line_type
a_vertex_index = vertex_index

View file

@ -13,11 +13,9 @@ 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()
{
@ -30,7 +28,6 @@ vertex =
// }
v_line_type = a_line_type;
v_vertex_index = a_vertex_index;
}
fragment =
@ -43,21 +40,14 @@ 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.0 && u_drawRange.y >= 0.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
@ -91,6 +81,78 @@ fragment =
gl_FragColor = v_color;
}
vertex41core =
#version 410
uniform highp mat4 u_modelMatrix;
uniform highp mat4 u_viewMatrix;
uniform highp mat4 u_projectionMatrix;
uniform lowp float u_active_extruder;
uniform lowp float u_shade_factor;
uniform highp int u_layer_view_type;
in highp float a_extruder;
in highp float a_line_type;
in highp vec4 a_vertex;
in lowp vec4 a_color;
in lowp vec4 a_material_color;
out lowp vec4 v_color;
out float v_line_type;
void main()
{
gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex;
v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer
// if ((a_line_type != 8) && (a_line_type != 9)) {
// v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a);
// }
v_line_type = a_line_type;
}
fragment41core =
#version 410
in lowp vec4 v_color;
in float v_line_type;
out vec4 frag_color;
uniform int u_show_travel_moves;
uniform int u_show_helpers;
uniform int u_show_skin;
uniform int u_show_infill;
void main()
{
if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9
// discard movements
discard;
}
// helpers: 4, 5, 7, 10, 11
if ((u_show_helpers == 0) && (
((v_line_type >= 3.5) && (v_line_type <= 4.5)) ||
((v_line_type >= 6.5) && (v_line_type <= 7.5)) ||
((v_line_type >= 9.5) && (v_line_type <= 10.5)) ||
((v_line_type >= 4.5) && (v_line_type <= 5.5)) ||
((v_line_type >= 10.5) && (v_line_type <= 11.5))
)) {
discard;
}
// skin: 1, 2, 3
if ((u_show_skin == 0) && (
(v_line_type >= 0.5) && (v_line_type <= 3.5)
)) {
discard;
}
// infill:
if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) {
// discard movements
discard;
}
frag_color = v_color;
}
[defaults]
u_active_extruder = 0.0
u_shade_factor = 0.60
@ -102,13 +164,10 @@ u_show_helpers = 1
u_show_skin = 1
u_show_infill = 1
u_drawRange = [-1.0, -1.0]
[bindings]
u_modelMatrix = model_matrix
u_viewMatrix = view_matrix
u_projectionMatrix = projection_matrix
u_drawRange = draw_range
[attributes]
a_vertex = vertex
@ -116,4 +175,3 @@ a_color = color
a_extruder = extruder
a_line_type = line_type
a_material_color = material_color
a_vertex_index = vertex_index