From f8dc44d12cbb9c9863a4e8f7fa0e4d65bb660ed4 Mon Sep 17 00:00:00 2001 From: Enrico Turri <34307919+enricoturri1966@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:28:08 +0100 Subject: [PATCH 1/2] SPE-2632 - Fixed rendering of bed numbers (#13814) --- src/slic3r/GUI/3DBed.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index 27d475d762..e45f1f2a69 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -171,6 +171,7 @@ void Bed3D::render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Tra shader->set_uniform("projection_matrix", projection_matrix); glsafe(::glEnable(GL_BLEND)); glsafe(::glEnable(GL_DEPTH_TEST)); + glsafe(glDepthMask(GL_FALSE)); glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); glsafe(::glBindTexture(GL_TEXTURE_2D, m_digits_texture->get_id())); @@ -187,13 +188,14 @@ void Bed3D::render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Tra mat.translate(s_multiple_beds.get_bed_translation(i)); if (build_volume().type() != BuildVolume::Type::Circle) mat.translate(Vec3d(0.3 * size_x, 0.3 * size_x, 0.)); - mat.translate(Vec3d(0., 0., 0.5)); + mat.translate(Vec3d(0., 0., 0.5 * GROUND_Z)); mat.scale(Vec3d(size_x, size_x * aspect, 1.)); shader->set_uniform("view_model_matrix", mat); m_digits_models[i + 1]->render(); } glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); + glsafe(glDepthMask(GL_TRUE)); glsafe(::glDisable(GL_DEPTH_TEST)); shader->stop_using(); } From 32b5cfb1f50058da33a71b18983ce7fa7f643820 Mon Sep 17 00:00:00 2001 From: Enrico Turri <34307919+enricoturri1966@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:22:52 +0100 Subject: [PATCH 2/2] Show bed numbers when the camera is below the bed --- src/slic3r/GUI/3DBed.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index e45f1f2a69..58f609c0d2 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -171,7 +171,9 @@ void Bed3D::render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Tra shader->set_uniform("projection_matrix", projection_matrix); glsafe(::glEnable(GL_BLEND)); glsafe(::glEnable(GL_DEPTH_TEST)); - glsafe(glDepthMask(GL_FALSE)); + glsafe(::glDepthMask(GL_FALSE)); + const bool old_cullface = ::glIsEnabled(GL_CULL_FACE); + glsafe(::glDisable(GL_CULL_FACE)); glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); glsafe(::glBindTexture(GL_TEXTURE_2D, m_digits_texture->get_id())); @@ -195,7 +197,9 @@ void Bed3D::render(GLCanvas3D& canvas, const Transform3d& view_matrix, const Tra m_digits_models[i + 1]->render(); } glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); - glsafe(glDepthMask(GL_TRUE)); + if (old_cullface) + glsafe(::glEnable(GL_CULL_FACE)); + glsafe(::glDepthMask(GL_TRUE)); glsafe(::glDisable(GL_DEPTH_TEST)); shader->stop_using(); }