kernel vec4 fishEye(sampler image, vec2 center, float factor)
{
    float d;
    vec2 v, uv;

    v = destCoord() - center;
    // break out into distance/unit vector form
    d = length(v);
    uv = normalize(v);
    // modify d to account for fish-eye distortion
    d = 0.6 * d / (1.0 - (d * d) / (factor * factor));
    return sample(image, samplerTransform(image, center + d * uv));
}
