                   random( i + vec2(1.0,0.0) ), u.x),
                    mix( random( i + vec2(0.0,1.0) ),
                        random( i + vec2(1.0,1.0) ), u.x), u.y);
      }
  
      float lines(in vec2 pos, float b){
        float scale = 10.0;
        pos *= scale;
        return smoothstep(0.0, 0.5 + b * 0.5, abs((sin(pos.x * 3.1415) + b * 2.0)) * 0.5);
      }

      vec2 rotate(vec2 v0, float ang) {
        float sinA = sin(ang);
        float cosA = cos(ang);
        mat3 m = mat3(cosA, -sinA, 