bevy/examples/ui
Antony e7a31d000e
Add border radius to UI nodes (adopted) (#12500)
# Objective

Implements border radius for UI nodes. Adopted from #8973, but excludes
shadows.

## Solution

- Add a component `BorderRadius` which contains a radius value for each
corner of the UI node.
- Use a fragment shader to generate the rounded corners using a signed
distance function.

<img width="50%"
src="https://github.com/bevyengine/bevy/assets/26204416/16b2ba95-e274-4ce7-adb2-34cc41a776a5"></img>

## Changelog

- `BorderRadius`: New component that holds the border radius values.
- `NodeBundle` & `ButtonBundle`: Added a `border_radius: BorderRadius`
field.
- `extract_uinode_borders`: Stripped down, most of the work is done in
the shader now. Borders are no longer assembled from multiple rects,
instead the shader uses a signed distance function to draw the border.
- `UiVertex`: Added size, border and radius fields.
- `UiPipeline`: Added three vertex attributes to the vertex buffer
layout, to accept the UI node's size, border thickness and border
radius.
- Examples: Added rounded corners to the UI element in the `button`
example, and a `rounded_borders` example.

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Zachary Harrold <zac@harrold.com.au>
Co-authored-by: Pablo Reinhardt <126117294+pablo-lua@users.noreply.github.com>
2024-03-19 22:44:00 +00:00
..
borders.rs Fix "dark grey" colors becoming lighter in various examples (#12333) 2024-03-06 05:19:59 +00:00
button.rs Add border radius to UI nodes (adopted) (#12500) 2024-03-19 22:44:00 +00:00
display_and_visibility.rs Decouple BackgroundColor from UiImage (#11165) 2024-03-03 21:35:50 +00:00
flex_layout.rs Fix "dark grey" colors becoming lighter in various examples (#12333) 2024-03-06 05:19:59 +00:00
font_atlas_debug.rs make example font_atlas_debug deterministic with a seeded random (#12519) 2024-03-17 21:11:25 +00:00
grid.rs Fix pink colors in examples (#12451) 2024-03-18 17:44:46 +00:00
overflow_debug.rs Fix "dark grey" colors becoming lighter in various examples (#12333) 2024-03-06 05:19:59 +00:00
overflow.rs Fix "dark grey" colors becoming lighter in various examples (#12333) 2024-03-06 05:19:59 +00:00
relative_cursor_position.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
render_ui_to_texture.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
rounded_borders.rs Add border radius to UI nodes (adopted) (#12500) 2024-03-19 22:44:00 +00:00
size_constraints.rs Decouple BackgroundColor from UiImage (#11165) 2024-03-03 21:35:50 +00:00
text_debug.rs Fix green colors becoming darker in various examples (#12328) 2024-03-05 23:42:03 +00:00
text_wrap_debug.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
text.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
transparency_ui.rs Decouple BackgroundColor from UiImage (#11165) 2024-03-03 21:35:50 +00:00
ui_material.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
ui_scaling.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
ui_texture_atlas_slice.rs Slicing support for texture atlas (#12059) 2024-03-05 16:05:39 +00:00
ui_texture_atlas.rs Decouple BackgroundColor from UiImage (#11165) 2024-03-03 21:35:50 +00:00
ui_texture_slice.rs Slicing support for texture atlas (#12059) 2024-03-05 16:05:39 +00:00
ui.rs Add a gizmo-based overlay to show UI node outlines (Adopted) (#11237) 2024-03-18 18:11:06 +00:00
viewport_debug.rs Fix green colors becoming darker in various examples (#12328) 2024-03-05 23:42:03 +00:00
window_fallthrough.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
z_index.rs Fix green colors becoming darker in various examples (#12328) 2024-03-05 23:42:03 +00:00