layout(binding=0) out 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_ThreadPosition.x * 2 - width(dest)) / float(width(dest)));
    float y = (float(sk_ThreadPosition.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_ThreadPosition.xy, pixel);
}
