mirror of
https://github.com/bevyengine/bevy
synced 2024-12-13 06:42:29 +00:00
ab16f5ed6a
> Follow up to #10588 > Closes #11749 (Supersedes #11756) Enable Texture slicing for the following UI nodes: - `ImageBundle` - `ButtonBundle` <img width="739" alt="Screenshot 2024-01-29 at 13 57 43" src="https://github.com/bevyengine/bevy/assets/26703856/37675681-74eb-4689-ab42-024310cf3134"> I also added a collection of `fantazy-ui-borders` from [Kenney's](www.kenney.nl) assets, with the appropriate license (CC). If it's a problem I can use the same textures as the `sprite_slice` example # Work done Added the `ImageScaleMode` component to the targetted bundles, most of the logic is directly reused from `bevy_sprite`. The only additional internal component is the UI specific `ComputedSlices`, which does the same thing as its spritee equivalent but adapted to UI code. Again the slicing is not compatible with `TextureAtlas`, it's something I need to tackle more deeply in the future # Fixes * [x] I noticed that `TextureSlicer::compute_slices` could infinitely loop if the border was larger that the image half extents, now an error is triggered and the texture will fallback to being stretched * [x] I noticed that when using small textures with very small *tiling* options we could generate hundred of thousands of slices. Now I set a minimum size of 1 pixel per slice, which is already ridiculously small, and a warning will be sent at runtime when slice count goes above 1000 * [x] Sprite slicing with `flip_x` or `flip_y` would give incorrect results, correct flipping is now supported to both sprites and ui image nodes thanks to @odecay observation # GPU Alternative I create a separate branch attempting to implementing 9 slicing and tiling directly through the `ui.wgsl` fragment shader. It works but requires sending more data to the GPU: - slice border - tiling factors And more importantly, the actual quad *scale* which is hard to put in the shader with the current code, so that would be for a later iteration
30 lines
No EOL
765 B
Text
30 lines
No EOL
765 B
Text
|
|
|
|
Fantasy UI Borders (1.0)
|
|
|
|
Created/distributed by Kenney (www.kenney.nl)
|
|
Creation date: 03-12-2023
|
|
|
|
For the sample image the font 'Aoboshi One' was used, OPL (Open Font License)
|
|
|
|
------------------------------
|
|
|
|
License: (Creative Commons Zero, CC0)
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
|
|
You can use this content for personal, educational, and commercial purposes.
|
|
|
|
Support by crediting 'Kenney' or 'www.kenney.nl' (this is not a requirement)
|
|
|
|
------------------------------
|
|
|
|
• Website : www.kenney.nl
|
|
• Donate : www.kenney.nl/donate
|
|
|
|
• Patreon : patreon.com/kenney
|
|
|
|
Follow on social media for updates:
|
|
|
|
• Twitter: twitter.com/KenneyNL
|
|
• Instagram: instagram.com/kenney_nl
|
|
• Mastodon: mastodon.gamedev.place/@kenney |