mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 06:10:06 -04:00
Add RectShape::blur_width to implement shadows (#4267)
This is mostly a refactor, but has some performance benefits: * We (re)use the same tessellator as for everything else, leading to less allocations * We cull shapes before rendering them Adding `RectShape::blur_width` means it can also be used for other effects, such as glow.
This commit is contained in:
@@ -291,9 +291,8 @@ impl Frame {
|
||||
if shadow == Default::default() {
|
||||
frame_shape
|
||||
} else {
|
||||
let shadow = shadow.tessellate(outer_rect, rounding);
|
||||
let shadow = Shape::Mesh(shadow);
|
||||
Shape::Vec(vec![shadow, frame_shape])
|
||||
let shadow = shadow.as_shape(outer_rect, rounding);
|
||||
Shape::Vec(vec![Shape::from(shadow), frame_shape])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -762,6 +762,7 @@ pub fn paint_texture_at(
|
||||
rounding: options.rounding,
|
||||
fill: options.tint,
|
||||
stroke: Stroke::NONE,
|
||||
blur_width: 0.0,
|
||||
fill_texture_id: texture.id,
|
||||
uv: options.uv,
|
||||
});
|
||||
|
||||
@@ -739,14 +739,8 @@ impl<'a> Slider<'a> {
|
||||
};
|
||||
let v = v + Vec2::splat(visuals.expansion);
|
||||
let rect = Rect::from_center_size(center, 2.0 * v);
|
||||
ui.painter().add(epaint::RectShape {
|
||||
fill: visuals.bg_fill,
|
||||
stroke: visuals.fg_stroke,
|
||||
rect,
|
||||
rounding: visuals.rounding,
|
||||
fill_texture_id: Default::default(),
|
||||
uv: Rect::ZERO,
|
||||
});
|
||||
ui.painter()
|
||||
.rect(rect, visuals.rounding, visuals.bg_fill, visuals.fg_stroke);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user