Skip to content

Commit

Permalink
Fix UI border artifacts caused by incorrect blending (#12725)
Browse files Browse the repository at this point in the history
Fixes #12702.

Co-authored-by: François Mockers <mockersf@gmail.com>
  • Loading branch information
floppyhammer and mockersf authored May 15, 2024
1 parent debcf3f commit 8da4fcb
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions crates/bevy_ui/src/render/ui.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -159,12 +159,15 @@ fn draw(in: VertexOutput) -> vec4<f32> {
// is present, otherwise an outline about the external boundary would be drawn even without
// a border.
let t = 1. - select(step(0.0, border_distance), smoothstep(0.0, fborder, border_distance), external_distance < internal_distance);
return color.rgba * t;

// Blend mode ALPHA_BLENDING is used for UI elements, so we don't premultiply alpha here.

This comment has been minimized.

Copy link
@eidloi

eidloi May 15, 2024

you mean you don't premultiply color, right?

return vec4(color.rgb, color.a * t);
}

// The item is a rectangle, draw normally with anti-aliasing at the edges.
let t = 1. - smoothstep(0.0, fexternal, external_distance);
return color.rgba * t;

return vec4(color.rgb, color.a * t);
}

@fragment
Expand Down

0 comments on commit 8da4fcb

Please sign in to comment.