-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - Fix alpha channel in RGB32F image texture format conversion #6914
[Merged by Bors] - Fix alpha channel in RGB32F image texture format conversion #6914
Conversation
Could you describe the end result of this change in the PR description so future readers can piece it together more quickly? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change itself appears correct!
@alice-i-cecile The description has been refined! |
Could you also update the PR title to something like "fix alpha channel in some image texture format conversion"? "copypasta" is not the most helpful word |
@mockersf Done :) |
bors r+ |
# Objective The following code: ```rs use bevy::prelude::Image; use image::{ DynamicImage, GenericImage, Rgba }; fn main() { let mut dynamic_image = DynamicImage::new_rgb32f(1, 1); dynamic_image.put_pixel(0, 0, Rgba([1, 1, 1, 1])); let image = Image::from_dynamic(dynamic_image, false); // Panic! println!("{image:?}"); } ``` Can cause an assertion failed: ``` thread 'main' panicked at 'assertion failed: `(left == right)` left: `16`, right: `14`: Pixel data, size and format have to match', .../bevy_render-0.9.1/src/texture/image.rs:209:9 stack backtrace: ... 4: core::panicking::assert_failed<usize,usize> at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:181 5: bevy_render::texture::image::Image::new at .../bevy_render-0.9.1/src/texture/image.rs:209 6: bevy_render::texture::image::Image::from_dynamic at .../bevy_render-0.9.1/src/texture/image_texture_conversion.rs:159 7: bevy_test::main at ./src/main.rs:8 ... ``` It seems to be cause by a copypasta in `crates/bevy_render/src/texture/image_texture_conversion.rs`. Let's fix it. ## Solution ```diff // DynamicImage::ImageRgb32F(image) => { - let a = u16::max_value(); + let a = 1f32; ``` This will fix the conversion. --- ## Changelog - Fixed the alpha channel of the `image::DynamicImage::ImageRgb32F` to `bevy_render::texture::Image` conversion in `bevy_render::texture::Image::from_dynamic()`.
Pull request successfully merged into main. Build succeeded:
|
…ne#6914) # Objective The following code: ```rs use bevy::prelude::Image; use image::{ DynamicImage, GenericImage, Rgba }; fn main() { let mut dynamic_image = DynamicImage::new_rgb32f(1, 1); dynamic_image.put_pixel(0, 0, Rgba([1, 1, 1, 1])); let image = Image::from_dynamic(dynamic_image, false); // Panic! println!("{image:?}"); } ``` Can cause an assertion failed: ``` thread 'main' panicked at 'assertion failed: `(left == right)` left: `16`, right: `14`: Pixel data, size and format have to match', .../bevy_render-0.9.1/src/texture/image.rs:209:9 stack backtrace: ... 4: core::panicking::assert_failed<usize,usize> at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:181 5: bevy_render::texture::image::Image::new at .../bevy_render-0.9.1/src/texture/image.rs:209 6: bevy_render::texture::image::Image::from_dynamic at .../bevy_render-0.9.1/src/texture/image_texture_conversion.rs:159 7: bevy_test::main at ./src/main.rs:8 ... ``` It seems to be cause by a copypasta in `crates/bevy_render/src/texture/image_texture_conversion.rs`. Let's fix it. ## Solution ```diff // DynamicImage::ImageRgb32F(image) => { - let a = u16::max_value(); + let a = 1f32; ``` This will fix the conversion. --- ## Changelog - Fixed the alpha channel of the `image::DynamicImage::ImageRgb32F` to `bevy_render::texture::Image` conversion in `bevy_render::texture::Image::from_dynamic()`.
…ne#6914) # Objective The following code: ```rs use bevy::prelude::Image; use image::{ DynamicImage, GenericImage, Rgba }; fn main() { let mut dynamic_image = DynamicImage::new_rgb32f(1, 1); dynamic_image.put_pixel(0, 0, Rgba([1, 1, 1, 1])); let image = Image::from_dynamic(dynamic_image, false); // Panic! println!("{image:?}"); } ``` Can cause an assertion failed: ``` thread 'main' panicked at 'assertion failed: `(left == right)` left: `16`, right: `14`: Pixel data, size and format have to match', .../bevy_render-0.9.1/src/texture/image.rs:209:9 stack backtrace: ... 4: core::panicking::assert_failed<usize,usize> at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:181 5: bevy_render::texture::image::Image::new at .../bevy_render-0.9.1/src/texture/image.rs:209 6: bevy_render::texture::image::Image::from_dynamic at .../bevy_render-0.9.1/src/texture/image_texture_conversion.rs:159 7: bevy_test::main at ./src/main.rs:8 ... ``` It seems to be cause by a copypasta in `crates/bevy_render/src/texture/image_texture_conversion.rs`. Let's fix it. ## Solution ```diff // DynamicImage::ImageRgb32F(image) => { - let a = u16::max_value(); + let a = 1f32; ``` This will fix the conversion. --- ## Changelog - Fixed the alpha channel of the `image::DynamicImage::ImageRgb32F` to `bevy_render::texture::Image` conversion in `bevy_render::texture::Image::from_dynamic()`.
Objective
The following code:
Can cause an assertion failed:
It seems to be cause by a copypasta in
crates/bevy_render/src/texture/image_texture_conversion.rs
. Let's fix it.Solution
This will fix the conversion.
Changelog
image::DynamicImage::ImageRgb32F
tobevy_render::texture::Image
conversion inbevy_render::texture::Image::from_dynamic()
.