Browse Source

Fixed darker colors of objects inside multi-material gizmo when objects are mirrored.

Lukáš Hejl 3 years ago
parent
commit
0f9a9de745

+ 5 - 0
resources/shaders/mm_gouraud.fs

@@ -22,6 +22,8 @@ uniform vec4 uniform_color;
 varying vec3 clipping_planes_dots;
 varying vec4 model_pos;
 
+uniform bool volume_mirrored;
+
 void main()
 {
     if (any(lessThan(clipping_planes_dots, ZERO)))
@@ -34,6 +36,9 @@ void main()
     triangle_normal = -triangle_normal;
 #endif
 
+    if (volume_mirrored)
+        triangle_normal = -triangle_normal;
+
     // First transform the normal into camera space and normalize the result.
     vec3 eye_normal = normalize(gl_NormalMatrix * triangle_normal);
 

+ 1 - 0
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp

@@ -203,6 +203,7 @@ void GLGizmoMmuSegmentation::render_triangles(const Selection &selection) const
         glsafe(::glMultMatrixd(trafo_matrix.data()));
 
         shader->set_uniform("volume_world_matrix", trafo_matrix);
+        shader->set_uniform("volume_mirrored", is_left_handed);
         m_triangle_selectors[mesh_id]->render(m_imgui);
 
         glsafe(::glPopMatrix());