Skip to content

Commit

Permalink
rgba16unorm
Browse files Browse the repository at this point in the history
  • Loading branch information
robtfm committed Aug 28, 2023
1 parent 365cf31 commit 4e85bcf
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 23 deletions.
2 changes: 1 addition & 1 deletion crates/bevy_render/src/texture/dds.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ pub fn dds_format_to_texture_format(
TextureFormat::Bc3RgbaUnorm
}
}
D3DFormat::A16B16G16R16 => TextureFormat::Rgba16Uint,
D3DFormat::A16B16G16R16 => TextureFormat::Rgba16Unorm,
D3DFormat::Q16W16V16U16 => TextureFormat::Rgba16Sint,
D3DFormat::R16F => TextureFormat::R16Float,
D3DFormat::G16R16F => TextureFormat::Rg16Float,
Expand Down
30 changes: 8 additions & 22 deletions crates/bevy_render/src/texture/image_texture_conversion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,34 +79,20 @@ impl Image {

data = cast_slice(&raw_data).to_owned();
}
DynamicImage::ImageRgb16(image) => {
width = image.width();
height = image.height();
format = TextureFormat::Rgba16Uint;

let mut local_data =
Vec::with_capacity(width as usize * height as usize * format.pixel_size());

for pixel in image.into_raw().chunks_exact(3) {
// TODO: use the array_chunks method once stabilised
// https://github.com/rust-lang/rust/issues/74985
let r = pixel[0];
let g = pixel[1];
let b = pixel[2];
let a = u16::max_value();
DynamicImage::ImageRgb16(i) => {
let i = DynamicImage::ImageRgb16(i).into_rgba16();
width = i.width();
height = i.height();
format = TextureFormat::Rgba16Unorm;

local_data.extend_from_slice(&r.to_ne_bytes());
local_data.extend_from_slice(&g.to_ne_bytes());
local_data.extend_from_slice(&b.to_ne_bytes());
local_data.extend_from_slice(&a.to_ne_bytes());
}
let raw_data = i.into_raw();

data = local_data;
data = cast_slice(&raw_data).to_owned();
}
DynamicImage::ImageRgba16(i) => {
width = i.width();
height = i.height();
format = TextureFormat::Rgba16Uint;
format = TextureFormat::Rgba16Unorm;

let raw_data = i.into_raw();

Expand Down

0 comments on commit 4e85bcf

Please sign in to comment.