diff --git a/crates/bevy_render/Cargo.toml b/crates/bevy_render/Cargo.toml index 0252550664..cbc25b9146 100644 --- a/crates/bevy_render/Cargo.toml +++ b/crates/bevy_render/Cargo.toml @@ -61,7 +61,7 @@ bevy_utils = { path = "../bevy_utils", version = "0.14.0-dev" } bevy_tasks = { path = "../bevy_tasks", version = "0.14.0-dev" } # rendering -image = { version = "0.24", default-features = false } +image = { version = "0.25", default-features = false } # misc codespan-reporting = "0.11.0" diff --git a/crates/bevy_render/src/texture/hdr_texture_loader.rs b/crates/bevy_render/src/texture/hdr_texture_loader.rs index 641055690f..b1ab398f42 100644 --- a/crates/bevy_render/src/texture/hdr_texture_loader.rs +++ b/crates/bevy_render/src/texture/hdr_texture_loader.rs @@ -3,6 +3,7 @@ use crate::{ texture::{Image, TextureFormatPixelInfo}, }; use bevy_asset::{io::Reader, AssetLoader, AsyncReadExt, LoadContext}; +use image::DynamicImage; use serde::{Deserialize, Serialize}; use thiserror::Error; use wgpu::{Extent3d, TextureDimension, TextureFormat}; @@ -46,10 +47,13 @@ impl AssetLoader for HdrTextureLoader { reader.read_to_end(&mut bytes).await?; let decoder = image::codecs::hdr::HdrDecoder::new(bytes.as_slice())?; let info = decoder.metadata(); - let rgb_data = decoder.read_image_hdr()?; - let mut rgba_data = Vec::with_capacity(rgb_data.len() * format.pixel_size()); + let dynamic_image = DynamicImage::from_decoder(decoder)?; + let image_buffer = dynamic_image + .as_rgb32f() + .expect("HDR Image format should be Rgb32F"); + let mut rgba_data = Vec::with_capacity(image_buffer.pixels().len() * format.pixel_size()); - for rgb in rgb_data { + for rgb in image_buffer.pixels() { let alpha = 1.0f32; rgba_data.extend_from_slice(&rgb.0[0].to_ne_bytes());