commit 457bd08eb0071c13e75afc005ba3db85c03886ec
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Dec 2 15:27:12 2020 +0100

    Bugfix: always normalize the normal vector after modifying it, otherwise the next effect might not work correctly (Distort!)

diff --git a/src/main/java/org/distorted/library/effect/VertexEffectDeform.java b/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
index dcd871b..e8ca991 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
@@ -145,7 +145,8 @@ public class VertexEffectDeform extends VertexEffect
       + "v.z += force.z*d*d*(3.0*d*d -8.0*d +6.0);                           \n"  // thick bubble
       + "float b = -(12.0*force.z*d*(1.0-d)*(1.0-d)*(1.0-d))*one_over_denom; \n"
 
-      + "n.xy += n.z*b*ps.xy;";
+      + "n.xy += n.z*b*ps.xy;                                                \n"
+      + "n = normalize(n);";
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectQuaternion.java b/src/main/java/org/distorted/library/effect/VertexEffectQuaternion.java
index fa0a5a2..a2a3355 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectQuaternion.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectQuaternion.java
@@ -78,7 +78,9 @@ public class VertexEffectQuaternion extends VertexEffect
 
      + "n.x = qw*nx + qz*ny - qy*nz - qx*nw;          \n"
      + "n.y = qw*ny - qz*nx - qy*nw + qx*nz;          \n"
-     + "n.z = qw*nz - qz*nw + qy*nx - qx*ny;          \n";
+     + "n.z = qw*nz - qz*nw + qy*nx - qx*ny;          \n"
+
+     + "n = normalize(n);";
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectRotate.java b/src/main/java/org/distorted/library/effect/VertexEffectRotate.java
index a168840..61995df 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectRotate.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectRotate.java
@@ -94,7 +94,9 @@ public class VertexEffectRotate extends VertexEffect
 
     + "n.x = qw*nx + qz*ny - qy*nz - qx*nw;           \n"
     + "n.y = qw*ny - qz*nx - qy*nw + qx*nz;           \n"
-    + "n.z = qw*nz - qz*nw + qy*nx - qx*ny;           \n";
+    + "n.z = qw*nz - qz*nw + qy*nx - qx*ny;           \n"
+
+    + "n = normalize(n);";
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectScale.java b/src/main/java/org/distorted/library/effect/VertexEffectScale.java
index b6b5bb5..5b1c654 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectScale.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectScale.java
@@ -53,7 +53,8 @@ public class VertexEffectScale extends VertexEffect
     "float X = vUniforms[effect].y*vUniforms[effect].z; \n" +
     "float Y = vUniforms[effect].x*vUniforms[effect].z; \n" +
     "float Z = vUniforms[effect].x*vUniforms[effect].y; \n" +
-    "n *= vec3(X,Y,Z);                                  \n";
+    "n *= vec3(X,Y,Z);                                  \n" +
+    "n = normalize(n);                                  \n";
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectShear.java b/src/main/java/org/distorted/library/effect/VertexEffectShear.java
index 3649049..61d520d 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectShear.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectShear.java
@@ -72,7 +72,9 @@ public class VertexEffectShear extends VertexEffect
     + "float new_nx = n.x - sy*n.y + sy*sz*n.z;         \n"
     + "float new_ny =-sx*n.x + tmp*(n.y - sz*n.z);      \n"
     + "n.x = new_nx;                                    \n"
-    + "n.y = new_ny;                                    \n";
+    + "n.y = new_ny;                                    \n"
+
+    + "n = normalize(n);";
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectWave.java b/src/main/java/org/distorted/library/effect/VertexEffectWave.java
index eb68adb..74ffc82 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectWave.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectWave.java
@@ -181,6 +181,7 @@ public class VertexEffectWave extends VertexEffect
       +     "n.x = (n.x*normal.z + n.z*normal.x);                     \n"   //
       +     "n.y = (n.y*normal.z + n.z*normal.y);                     \n"   // ? Because if we do the above, my Nexus4 crashes
       +     "n.z = (n.z*normal.z);                                    \n"   // during shader compilation!
+      +     "n = normalize(n);                                        \n"
       +     "}                                                        \n"
       +   "}";
     }
