diff options
Diffstat (limited to 'vgcodec/src/paint.wgsl')
-rw-r--r-- | vgcodec/src/paint.wgsl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/vgcodec/src/paint.wgsl b/vgcodec/src/paint.wgsl index f23e903..7006310 100644 --- a/vgcodec/src/paint.wgsl +++ b/vgcodec/src/paint.wgsl @@ -1,7 +1,8 @@ struct Uniforms { x: f32, y: f32, - radius: f32, + rx: f32, + ry: f32, r: f32, g: f32, b: f32 @@ -13,7 +14,9 @@ struct Uniforms { @compute @workgroup_size(1) fn main(@builtin(global_invocation_id) global_id: vec3<u32>) { let coords = global_id.xy; - if distance(vec2<f32>(coords), vec2(uniforms.x, uniforms.y)) < uniforms.radius { + let kc = vec2<f32>(coords) - vec2(uniforms.x, uniforms.y); + let d = length(kc / vec2(uniforms.rx, uniforms.ry)); + if d < 1.0 { textureStore(tex, vec2<i32>(coords), vec4<f32>(vec3<f32>(uniforms.r, uniforms.g, uniforms.b), 1.0)); } } |