diff --git a/examples/custom_quad/src/main.rs b/examples/custom_quad/src/main.rs index fdc3c0c2..81911669 100644 --- a/examples/custom_quad/src/main.rs +++ b/examples/custom_quad/src/main.rs @@ -97,13 +97,13 @@ impl Example { self.snap, ), text!("Radius: {top_left:.2}/{top_right:.2}/{bottom_right:.2}/{bottom_left:.2}"), - slider(1.0..=100.0, top_left, Message::RadiusTopLeftChanged).step(0.01), - slider(1.0..=100.0, top_right, Message::RadiusTopRightChanged).step(0.01), - slider(1.0..=100.0, bottom_right, Message::RadiusBottomRightChanged) + slider(1.0..=200.0, top_left, Message::RadiusTopLeftChanged).step(0.01), + slider(1.0..=200.0, top_right, Message::RadiusTopRightChanged).step(0.01), + slider(1.0..=200.0, bottom_right, Message::RadiusBottomRightChanged) .step(0.01), - slider(1.0..=100.0, bottom_left, Message::RadiusBottomLeftChanged) + slider(1.0..=200.0, bottom_left, Message::RadiusBottomLeftChanged) .step(0.01), - slider(1.0..=10.0, self.border_width, Message::BorderWidthChanged) + slider(0.0..=10.0, self.border_width, Message::BorderWidthChanged) .step(0.01), text!("Shadow: {sx:.2}x{sy:.2}, {sr:.2}"), slider(-100.0..=100.0, sx, Message::ShadowXOffsetChanged) diff --git a/wgpu/src/shader/image.wgsl b/wgpu/src/shader/image.wgsl index 905e5ae6..3a237c36 100644 --- a/wgpu/src/shader/image.wgsl +++ b/wgpu/src/shader/image.wgsl @@ -95,7 +95,7 @@ fn vs_main(input: VertexInput) -> VertexOutput { } out.position = globals.transform * out.position; - out.border_radius = globals.scale_factor * input.border_radius; + out.border_radius = globals.scale_factor * min(input.border_radius, vec4(min(input.clip_bounds.z, input.clip_bounds.w) / 2.0)); out.atlas = vec4(input.atlas_pos, input.atlas_pos + input.atlas_scale); out.layer = input.layer; out.opacity = input.opacity; diff --git a/wgpu/src/shader/quad/solid.wgsl b/wgpu/src/shader/quad/solid.wgsl index a2d8433d..2a07e3fa 100644 --- a/wgpu/src/shader/quad/solid.wgsl +++ b/wgpu/src/shader/quad/solid.wgsl @@ -40,13 +40,7 @@ fn solid_vs_main(input: SolidVertexInput) -> SolidVertexOutput { scale_snap = round(pos + scale + vec2(0.001, 0.001)) - pos - pos_snap - scale; } - var min_border_radius = min(input.scale.x, input.scale.y) * 0.5; - var border_radius: vec4 = vec4( - min(input.border_radius.x, min_border_radius), - min(input.border_radius.y, min_border_radius), - min(input.border_radius.z, min_border_radius), - min(input.border_radius.w, min_border_radius) - ); + let border_radius = min(input.border_radius, vec4(min(input.scale.x, input.scale.y) / 2.0)); var transform: mat4x4 = mat4x4( vec4(scale.x + scale_snap.x + 1.0, 0.0, 0.0, 0.0),