bevy/crates
musjj ae522225cd
Fix rounding bug in camera projection (#16828)
# Objective

Fixes #16773

## Solution

https://github.com/bevyengine/bevy/pull/15969 introduces a regression
that causes image tearing when `ImageFilterMode::Nearest` is used as the
sampler. Rounding the origin fixes the issue.

Credits to @sophrosyne97 for bisecting and finding the commit that broke
it.

## Testing

You can test it with this repository:
https://github.com/musjj/nearest_filter_bug

```bash
git clone https://github.com/musjj/nearest_filter_bug
cd nearest_filter_bug
echo '[patch.crates-io]\nbevy = { git = "https://github.com/musjj/bevy.git", branch = "rounding-bug" }' >>Cargo.toml
sed -i -e 's/0.15.0/0.15.0-dev/' Cargo.toml
cargo update && cargo run
```
Gradually resize the window to various sizes, while paying attention to
the sprite and font. No tearing should occur on any window resolution,
even on odd numbers.

Tested on Linux with Gnome. Tests on other platforms would be
appreciated.

---

## Showcase

Before:


![image](https://github.com/user-attachments/assets/785edeae-7b28-4735-bb8e-d7f79eb09ac2)


After:


![image](https://github.com/user-attachments/assets/9288bc45-a3cf-4e4e-b941-85a00844c627)
2024-12-15 19:15:27 +00:00
..
bevy_a11y Remove accesskit re-export from bevy_a11y (#16257) 2024-11-08 21:01:16 +00:00
bevy_animation Support tuple structs in AnimatedField (#16747) 2024-12-11 17:06:08 +00:00
bevy_app Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
bevy_asset Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_audio Remove TODO and add docs about limitations of PlaybackMode::Once (#16769) 2024-12-12 00:57:48 +00:00
bevy_color Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
bevy_core Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
bevy_core_pipeline Make indirect drawing opt-out instead of opt-in, enabling multidraw by default. (#16757) 2024-12-13 06:16:57 +00:00
bevy_derive Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_dev_tools Draw the UI debug overlay using the UI renderer (#16693) 2024-12-11 00:49:47 +00:00
bevy_diagnostic Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
bevy_dylib Generate links to definition in source code pages on docs.rs and dev-docs.bevyengine.org (#12965) 2024-07-29 23:10:16 +00:00
bevy_ecs Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_encase_derive Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_gilrs Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
bevy_gizmos Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_gltf Remove the meta field from LoadedAsset and ErasedLoadedAsset. (#15487) 2024-12-13 20:40:02 +00:00
bevy_hierarchy rename enqueue_command to queue_command for consistency (#16753) 2024-12-11 00:53:54 +00:00
bevy_image ✏️ Fix typos across bevy (#16702) 2024-12-08 01:18:39 +00:00
bevy_input Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
bevy_input_focus Improve bevy_input_focus (#16749) 2024-12-12 19:15:08 +00:00
bevy_internal Draw the UI debug overlay using the UI renderer (#16693) 2024-12-11 00:49:47 +00:00
bevy_log Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
bevy_macro_utils Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_math Derivative access patterns for curves (#16503) 2024-12-10 20:27:37 +00:00
bevy_mesh Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
bevy_mikktspace Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
bevy_pbr Make indirect drawing opt-out instead of opt-in, enabling multidraw by default. (#16757) 2024-12-13 06:16:57 +00:00
bevy_picking Reorder PickSet::Focus systems (#16791) 2024-12-13 18:55:22 +00:00
bevy_ptr Fix MSRVs for standalone crates (#16333) 2024-11-17 09:38:13 +00:00
bevy_reflect Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_remote BRP strict field in query (#16725) 2024-12-14 05:22:19 +00:00
bevy_render Fix rounding bug in camera projection (#16828) 2024-12-15 19:15:27 +00:00
bevy_scene Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
bevy_sprite BorderRect maintenance (#16727) 2024-12-12 04:33:44 +00:00
bevy_state Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_tasks Add no_std support to bevy_tasks (#15464) 2024-12-06 02:14:54 +00:00
bevy_text fix tiny copy-paste mistake in bevy_text::font_atlas_set (#16667) 2024-12-10 03:17:09 +00:00
bevy_time Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
bevy_transform Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
bevy_ui box-shadow clipping fix (#16790) 2024-12-13 21:35:39 +00:00
bevy_utils Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
bevy_window add missing type registration for Monitor (#16685) 2024-12-06 15:20:10 +00:00
bevy_winit Rename trigger.entity() to trigger.target() (#16716) 2024-12-08 21:55:09 +00:00