bevy/examples/2d
Predko Silvestr deb135c25c
Proportional scaling for the sprite's texture. (#17258)
# Objective

Bevy sprite image mode lacks proportional scaling for the underlying
texture. In many cases, it's required. For example, if it is desired to
support a wide variety of screens with a single texture, it's okay to
cut off some portion of the original texture.

## Solution

I added scaling of the texture during the preparation step. To fill the
sprite with the original texture, I scaled UV coordinates accordingly to
the sprite size aspect ratio and texture size aspect ratio. To fit
texture in a sprite the original `quad` is scaled and then the
additional translation is applied to place the scaled quad properly.


## Testing

For testing purposes could be used `2d/sprite_scale.rs`. Also, I am
thinking that it would be nice to have some tests for a
`crates/bevy_sprite/src/render/mod.rs:sprite_scale`.

---

## Showcase

<img width="1392" alt="image"
src="https://github.com/user-attachments/assets/c2c37b96-2493-4717-825f-7810d921b4bc"
/>
2025-01-24 18:24:02 +00:00
..
2d_shapes.rs Merge Style properties into Node. Use ComputedNode for computed properties. (#15975) 2024-10-18 22:25:33 +00:00
2d_viewport_to_world.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
bloom_2d.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
bounding_2d.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
cpu_draw.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
custom_gltf_vertex_attribute.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
mesh2d_alpha_mode.rs Migrate cameras to required components (#15641) 2024-10-05 01:59:52 +00:00
mesh2d_arcs.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
mesh2d_manual.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
mesh2d_vertex_color_texture.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
mesh2d.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
move_sprite.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
pixel_grid_snap.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
rotation.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
sprite_animation.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
sprite_flipping.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
sprite_scale.rs Proportional scaling for the sprite's texture. (#17258) 2025-01-24 18:24:02 +00:00
sprite_sheet.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
sprite_slice.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
sprite_tile.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
sprite.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
text2d.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
texture_atlas.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
transparency_2d.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00
wireframe_2d.rs Updated the 2D examples to make them uniform (#17237) 2025-01-23 16:46:58 +00:00