GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git
Fix Backplate corner rounding under negative alpha/blur and prevent duplicate square background quad drawing
src/widget/container/backplate.rs | 6 +++++-
src/widget/mod.rs | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/widget/container/backplate.rs b/src/widget/container/backplate.rs
index 02ba8f2..0ab957d 100644
--- a/src/widget/container/backplate.rs
+++ b/src/widget/container/backplate.rs
@@ -170,7 +170,11 @@ impl Element for Backplate {
let mut quads = Vec::new();
let bg_color = self.color();
let (wx, wy, ww, wh) = self.rect();
- if bg_color[3] != 0.0 {
+
+ let (r1, r2, r3, r4) = self.rounded_corners();
+ let has_rounded = r1 || r2 || r3 || r4;
+
+ if bg_color[3] != 0.0 && !has_rounded {
quads.push((wx, wy, ww, wh, bg_color));
}
for &child_ptr in &self.children {
diff --git a/src/widget/mod.rs b/src/widget/mod.rs
index 4df7aa2..3cafa77 100644
--- a/src/widget/mod.rs
+++ b/src/widget/mod.rs
@@ -436,7 +436,7 @@ pub trait Element {
let (x, y, w, h) = self.rect();
let radius = self.corner_radius();
let c = self.color();
- if c[3] > 0.0 {
+ if c[3].abs() > 0.001 {
quads.push((x, y, w, h, radius, c, (r1, r2, r3, r4)));
}
}