// Circle mask compute shader // Generates a circular mask (1.0 inside, 0.0 outside) #include "common_uniforms" #include "render/fullscreen_vs" struct CircleMaskParams { radius: f32, _pad0: f32, _pad1: f32, _pad2: f32, }; @group(0) @binding(0) var uniforms: CommonUniforms; @group(0) @binding(1) var params: CircleMaskParams; @fragment fn fs_main(@builtin(position) p: vec4) -> @location(0) vec4 { let uv = p.xy / uniforms.resolution; let center = vec2(0.5, 0.5); let aspect_corrected_uv = (uv - center) * vec2(uniforms.aspect_ratio, 1.0); let dist = length(aspect_corrected_uv); let edge_width = 0.01; let mask = smoothstep(params.radius + edge_width, params.radius - edge_width, dist); return vec4(mask, mask, mask, 1.0); }