   float l = length(final_expr);
        float _r = l;
        _r = 0.8 + (sin(_r) + 1.0) * 0.5 * 0.3;

        float _arg = atan(final_expr[1], final_expr[0]) / M_PI + 1.0;

        vec3 hsv = vec3(_arg, 0.5, _r);
        vec3 rgb = hsv2rgb( hsv );

  			gl_FragColor = vec4(rgb, 1.0);

      } else {
        // Texture-based Domain Coloring
        //final_expr = min(vec2(1.0, 1.0), final_expr);
        //final_expr = max(vec2(-1.0, -1.0), final_expr);
        vec4 tex = texture2D(gridTexture, final_expr /