layout(binding=0) writeonly texture2D dest;

void main () {
    half4 pixel = half4(0.0, 0.0, 0.0, 1.0);

    float max_x = 5.0;
    float max_y = 5.0;
    float x = (float(sk_GlobalInvocationID.x * 2 - width(dest)) / float(width(dest)));
    float y = (float(sk_GlobalInvocationID.y * 2 - height(dest)) / float(height(dest)));
    float3 ray_origin = float3(0.0, 0.0, -1.0);
    float3 ray_target = float3(x * max_x, y * max_y, 0.0);

    float3 sphere_center = float3(0.0, 0.0, -10.0);
    float sphere_radius = 1.0;

    float3 t_minus_c = ray_target - sphere_center;
    float b = dot(ray_origin, t_minus_c);
    float c = dot(t_minus_c, t_minus_c) - sphere_radius * sphere_radius;
    float bsqmc = b * b - c;

    if (bsqmc >= 0.0) {
        pixel = half4(0.4, 0.4, 1.0, 1.0);
    }

    write(dest, sk_GlobalInvocationID.xy, pixel);
}
