(ang.x),cos(ang.x));
  vec2 a2=vec2(sin(ang.y),cos(ang.y));
  vec2 a3=vec2(sin(ang.z),cos(ang.z));
  mat3 m;
  m[0]=(vec3((a1.y*a3.y)+((a1.x*a2.x)*a3.x),((a1.y*a2.x)*a3.x)+(a3.y*a1.x),(-a2.y)*a3.x));
  m[1]=(vec3((-a2.y)*a1.x,a1.y*a2.y,a2.x));
  m[2]=(vec3(((a3.y*a1.x)*a2.x)+(a1.y*a3.x),(a1.x*a3.x)-((a1.y*a3.y)*a2.x),a2.y*a3.y));
  return m;
}
float hash(in vec2 p){
  float h=dot(p,vec2(127.1,311.7));
  return fract(sin(h)*43758.547);
}
float noise(in vec2 p){
  vec2 i=floor(p);
  vec2 f=fract(p);
  vec2 u=