diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index a2c846ddc..792412a00 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -328,7 +328,6 @@ void GCodeViewer::SequentialView::Marker::render() shader->start_using(); shader->set_uniform("emission_factor", 0.0f); - #if ENABLE_GLBEGIN_GLEND_SHADERS_ATTRIBUTES const Camera& camera = wxGetApp().plater()->get_camera(); const Transform3d matrix = camera.get_view_matrix() * m_world_transform.cast(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp index a45ea7a4a..2db5aeec8 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp @@ -41,6 +41,7 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color, boo return; bool use_attributes = boost::algorithm::iends_with(shader->get_name(), "_attr"); +// assert(use_attributes); #endif // ENABLE_GLBEGIN_GLEND_SHADERS_ATTRIBUTES if (!m_cube.is_initialized()) { @@ -64,12 +65,16 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color, boo #endif // ENABLE_GLBEGIN_GLEND_REMOVAL #if ENABLE_GLBEGIN_GLEND_SHADERS_ATTRIBUTES - if (use_attributes) { - const Transform3d trafo = wxGetApp().plater()->get_camera().get_projection_view_matrix() * matrix * - Geometry::assemble_transform(center, angles, fullsize * Vec3d::Ones()); - shader->set_uniform("projection_view_model_matrix", trafo); - } - else { + const Camera& camera = wxGetApp().plater()->get_camera(); + const Transform3d view_model_matrix = camera.get_view_matrix() * matrix * Geometry::assemble_transform(center, angles, fullsize * Vec3d::Ones()); + const Transform3d& projection_matrix = camera.get_projection_matrix(); + // normal render + shader->set_uniform("view_model_matrix", view_model_matrix); + shader->set_uniform("projection_matrix", projection_matrix); + shader->set_uniform("normal_matrix", (Matrix3d)view_model_matrix.matrix().block(0, 0, 3, 3).inverse().transpose()); + // picking render + shader->set_uniform("projection_view_model_matrix", projection_matrix * view_model_matrix); + if (!use_attributes) { #endif // ENABLE_GLBEGIN_GLEND_SHADERS_ATTRIBUTES glsafe(::glPushMatrix()); glsafe(::glTranslated(center.x(), center.y(), center.z())); @@ -138,7 +143,11 @@ void GLGizmoBase::render_grabbers(const BoundingBoxf3& box) const void GLGizmoBase::render_grabbers(float size) const { +#if ENABLE_GLBEGIN_GLEND_SHADERS_ATTRIBUTES + GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light_attr"); +#else GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); +#endif // ENABLE_GLBEGIN_GLEND_SHADERS_ATTRIBUTES if (shader == nullptr) return; shader->start_using();