Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorenricoturri1966 <enricoturri@seznam.cz>2021-12-14 15:53:37 +0300
committerenricoturri1966 <enricoturri@seznam.cz>2021-12-14 15:53:37 +0300
commitcc2b8da6a4cb1a7aa2fbcc136fa07d003e6f748a (patch)
tree789689860521d2c6fd85d7edaa4b754fee786cd1 /src/slic3r/GUI
parent0538363b2be5cc86659ef107b97b0795ad63bdcd (diff)
#7461 - Use three floats for defining vertex normal to render travel toolpaths. This fixes a crash on NVIDIA Quadro graphics cards when turning on travel moves visibility in preview.
Diffstat (limited to 'src/slic3r/GUI')
-rw-r--r--src/slic3r/GUI/GCodeViewer.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp
index 5f61c84cc..6b9ba5da9 100644
--- a/src/slic3r/GUI/GCodeViewer.cpp
+++ b/src/slic3r/GUI/GCodeViewer.cpp
@@ -608,7 +608,7 @@ void GCodeViewer::init()
}
case EMoveType::Travel: {
buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Line;
- buffer.vertices.format = VBuffer::EFormat::PositionNormal1;
+ buffer.vertices.format = VBuffer::EFormat::PositionNormal3;
buffer.shader = "toolpaths_lines";
break;
}
@@ -1140,15 +1140,19 @@ void GCodeViewer::load_toolpaths(const GCodeProcessorResult& gcode_result)
// format data into the buffers to be rendered as lines
auto add_vertices_as_line = [](const GCodeProcessorResult::MoveVertex& prev, const GCodeProcessorResult::MoveVertex& curr, VertexBuffer& vertices) {
// x component of the normal to the current segment (the normal is parallel to the XY plane)
- const float normal_x = (curr.position - prev.position).normalized().y();
+ const Vec3f dir = (curr.position - prev.position).normalized();
+ Vec3f normal(dir.y(), -dir.x(), 0.0);
+ normal.normalize();
- auto add_vertex = [&vertices, normal_x](const GCodeProcessorResult::MoveVertex& vertex) {
+ auto add_vertex = [&vertices, &normal](const GCodeProcessorResult::MoveVertex& vertex) {
// add position
vertices.push_back(vertex.position.x());
vertices.push_back(vertex.position.y());
vertices.push_back(vertex.position.z());
- // add normal x component
- vertices.push_back(normal_x);
+ // add normal
+ vertices.push_back(normal.x());
+ vertices.push_back(normal.y());
+ vertices.push_back(normal.z());
};
// add previous vertex