   s += threshold(n + sin(PI * (t + 0.35)), 0.1, 0.15);
   s += threshold(n + sin(PI * (t + 0.7)), 0.2, 0.25);
   s += threshold(n + sin(PI * (t + 1.05)), 0.3, 0.35);
-  return saturate(s) * 0.55;
+  return clamp(s, 0.0, 1.0) * 0.55;
 }
 
 float turbulence(vec2 uv) {

  float g2 = circle_grid(TURBULENCE_SCALE, uv_scale, u_circle2, u_rotation2, 0.2);
  float g3 = circle_grid(TURBULENCE_SCALE, uv_scale, u_circle3, u_rotation3, 0.275);
  float v = (g1 * g1 + g2 - g3) * 0.5;
  return saturate(0.45 + 0.8 * v);
}

void main() {

const float ONE_THIRD = 1./3.;
const vec2 TURBULENCE_SCALE = vec2(0.8);

float triangle_noise(highp vec2 n) {
  n = fract(n * vec2(5.3987, 5.4421));
  n += dot(n.yx, n.xy + vec2(21.5351, 14.3137));
