oat width, height;
    uniform sampler2D gridTexture;

    // Convert from Hue,Saturation/Value to RGB
    // http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
    vec3 hsv2rgb(vec3 c)
    {
      vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
      vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
      return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
    }

    float arg(vec2 x) { return atan(B,A); }

    float complex_r(float x, float y) { return length(vec2(x,y)); }
    float complex_thet