Browse Source

Replace warning image with triadic colors.

part of CURA-7262
Remco Burema 5 years ago
parent
commit
b59d38e6c9
2 changed files with 37 additions and 6 deletions
  1. 11 4
      resources/shaders/overhang.shader
  2. 26 2
      resources/shaders/xray_composite.shader

+ 11 - 4
resources/shaders/overhang.shader

@@ -38,9 +38,13 @@ fragment =
     varying highp vec3 f_vertex;
     varying highp vec3 f_normal;
 
-    void main()
+    float round(float f)
     {
+        return sign(f) * floor(abs(f) + 0.5);
+    }
 
+    void main()
+    {
         mediump vec4 finalColor = vec4(0.0);
 
         // Ambient Component
@@ -62,8 +66,10 @@ fragment =
 
         finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor;
 
+        vec3 grid = vec3(f_vertex.x - round(f_vertex.x), f_vertex.y - round(f_vertex.y), f_vertex.z - round(f_vertex.z));
+        finalColor.a = dot(grid, grid) < 0.245 ? 0.667 : 1.0;
+
         gl_FragColor = finalColor;
-        gl_FragColor.a = 1.0;
     }
 
 vertex41core =
@@ -111,7 +117,6 @@ fragment41core =
 
     void main()
     {
-
         mediump vec4 finalColor = vec4(0.0);
 
         // Ambient Component
@@ -134,7 +139,9 @@ fragment41core =
         finalColor = (u_faceId != gl_PrimitiveID) ? ((-normal.y > u_overhangAngle) ? u_overhangColor : finalColor) : u_faceColor;
 
         frag_color = finalColor;
-        frag_color.a = 1.0;
+
+        vec3 grid = f_vertex - round(f_vertex);
+        frag_color.a = dot(grid, grid) < 0.245 ? 0.667 : 1.0;
     }
 
 [defaults]

+ 26 - 2
resources/shaders/xray_composite.shader

@@ -41,6 +41,13 @@ fragment =
 
     float kernel[9];
 
+    vec3 shiftHue(vec3 color, float hue)
+    {
+        const vec3 k = vec3(0.57735, 0.57735, 0.57735);
+        float cosAngle = cos(hue);
+        return vec3(color * cosAngle + cross(k, color) * sin(hue) + k * dot(k, color) * (1.0 - cosAngle));
+    }
+
     void main()
     {
         kernel[0] = 0.0; kernel[1] = 1.0; kernel[2] = 0.0;
@@ -50,13 +57,18 @@ fragment =
         vec4 result = u_background_color;
         vec4 layer0 = texture2D(u_layer0, v_uvs);
 
+        float hue_shift = (layer0.a - 0.333) * 6.2831853;
+        if (layer0.a > 0.5)
+        {
+            layer0.a = 1.0;
+        }
         result = mix(result, layer0, layer0.a);
 
         float intersection_count = texture2D(u_layer2, v_uvs).r * 51.0; // (1 / .02) + 1 (+1 magically fixes issues with high intersection count models)
         float rest = mod(intersection_count + .01, 2.0);
         if (rest > 1.0 && rest < 1.5 && intersection_count < 49.0)
         {
-            result = mix(result, texture2D(u_xray_error, v_uvs * u_xray_error_scale), u_xray_error_strength);
+            result = vec4(shiftHue(layer0.rgb, hue_shift), result.a);
         }
 
         vec4 sum = vec4(0.0);
@@ -117,6 +129,13 @@ fragment41core =
 
     float kernel[9];
 
+    vec3 shiftHue(vec3 color, float hue)
+    {
+        const vec3 k = vec3(0.57735, 0.57735, 0.57735);
+        float cosAngle = cos(hue);
+        return vec3(color * cosAngle + cross(k, color) * sin(hue) + k * dot(k, color) * (1.0 - cosAngle));
+    }
+
     void main()
     {
         kernel[0] = 0.0; kernel[1] = 1.0; kernel[2] = 0.0;
@@ -126,13 +145,18 @@ fragment41core =
         vec4 result = u_background_color;
         vec4 layer0 = texture(u_layer0, v_uvs);
 
+        float hue_shift = (layer0.a - 0.333) * 6.2831853;
+        if (layer0.a > 0.5)
+        {
+            layer0.a = 1.0;
+        }
         result = mix(result, layer0, layer0.a);
 
         float intersection_count = texture(u_layer2, v_uvs).r * 51; // (1 / .02) + 1 (+1 magically fixes issues with high intersection count models)
         float rest = mod(intersection_count + .01, 2.0);
         if (rest > 1.0 && rest < 1.5 && intersection_count < 49)
         {
-            result = mix(result, texture(u_xray_error, v_uvs * u_xray_error_scale), u_xray_error_strength);
+            result = vec4(shiftHue(layer0.rgb, hue_shift), result.a);
         }
 
         vec4 sum = vec4(0.0);