pub struct Image {
pub data: Option<Vec<u8>>,
pub texture_descriptor: TextureDescriptor<Option<&'static str>, &'static [TextureFormat]>,
pub sampler: ImageSampler,
pub texture_view_descriptor: Option<TextureViewDescriptor<Option<&'static str>>>,
pub asset_usage: RenderAssetUsages,
}Fields§
§data: Option<Vec<u8>>Raw pixel data.
If the image is being used as a storage texture which doesn’t need to be initialized by the
CPU, then this should be None
Otherwise, it should always be Some
texture_descriptor: TextureDescriptor<Option<&'static str>, &'static [TextureFormat]>§sampler: ImageSamplerThe ImageSampler to use during rendering.
texture_view_descriptor: Option<TextureViewDescriptor<Option<&'static str>>>§asset_usage: RenderAssetUsagesImplementations§
Source§impl Image
impl Image
Sourcepub fn new(
size: Extent3d,
dimension: TextureDimension,
data: Vec<u8>,
format: TextureFormat,
asset_usage: RenderAssetUsages,
) -> Image
pub fn new( size: Extent3d, dimension: TextureDimension, data: Vec<u8>, format: TextureFormat, asset_usage: RenderAssetUsages, ) -> Image
Creates a new image from raw binary data and the corresponding metadata.
§Panics
Panics if the length of the data, volume of the size and the size of the format
do not match.
Sourcepub fn new_uninit(
size: Extent3d,
dimension: TextureDimension,
format: TextureFormat,
asset_usage: RenderAssetUsages,
) -> Image
pub fn new_uninit( size: Extent3d, dimension: TextureDimension, format: TextureFormat, asset_usage: RenderAssetUsages, ) -> Image
Exactly the same as Image::new, but doesn’t initialize the image
Sourcepub fn transparent() -> Image
pub fn transparent() -> Image
A transparent white 1x1x1 image.
Contrast to Image::default, which is opaque.
Sourcepub fn default_uninit() -> Image
pub fn default_uninit() -> Image
Creates a new uninitialized 1x1x1 image
Sourcepub fn new_fill(
size: Extent3d,
dimension: TextureDimension,
pixel: &[u8],
format: TextureFormat,
asset_usage: RenderAssetUsages,
) -> Image
pub fn new_fill( size: Extent3d, dimension: TextureDimension, pixel: &[u8], format: TextureFormat, asset_usage: RenderAssetUsages, ) -> Image
Creates a new image from raw binary data and the corresponding metadata, by filling
the image data with the pixel data repeated multiple times.
§Panics
Panics if the size of the format is not a multiple of the length of the pixel data.
Sourcepub fn aspect_ratio(&self) -> AspectRatio
pub fn aspect_ratio(&self) -> AspectRatio
Returns the aspect ratio (width / height) of a 2D image.
Sourcepub fn resize(&mut self, size: Extent3d)
pub fn resize(&mut self, size: Extent3d)
Resizes the image to the new size, by removing information or appending 0 to the data.
Does not properly resize the contents of the image, but only its internal data buffer.
Sourcepub fn reinterpret_size(&mut self, new_size: Extent3d)
pub fn reinterpret_size(&mut self, new_size: Extent3d)
Changes the size, asserting that the total number of data elements (pixels) remains the
same.
§Panics
Panics if the new_size does not have the same volume as to old one.
Sourcepub fn reinterpret_stacked_2d_as_array(&mut self, layers: u32)
pub fn reinterpret_stacked_2d_as_array(&mut self, layers: u32)
Takes a 2D image containing vertically stacked images of the same size, and reinterprets
it as a 2D array texture, where each of the stacked images becomes one layer of the
array. This is primarily for use with the texture2DArray shader uniform type.
§Panics
Panics if the texture is not 2D, has more than one layers or is not evenly dividable into
the layers.
Sourcepub fn convert(&self, new_format: TextureFormat) -> Option<Image>
pub fn convert(&self, new_format: TextureFormat) -> Option<Image>
Convert a texture from a format to another. Only a few formats are supported as input and output:
TextureFormat::R8UnormTextureFormat::Rg8UnormTextureFormat::Rgba8UnormSrgb
To get Image as a image::DynamicImage see:
Image::try_into_dynamic.
Sourcepub fn from_buffer(
buffer: &[u8],
image_type: ImageType<'_>,
supported_compressed_formats: CompressedImageFormats,
is_srgb: bool,
image_sampler: ImageSampler,
asset_usage: RenderAssetUsages,
) -> Result<Image, TextureError>
pub fn from_buffer( buffer: &[u8], image_type: ImageType<'_>, supported_compressed_formats: CompressedImageFormats, is_srgb: bool, image_sampler: ImageSampler, asset_usage: RenderAssetUsages, ) -> Result<Image, TextureError>
Load a bytes buffer in a Image, according to type image_type, using the image
crate
Sourcepub fn is_compressed(&self) -> bool
pub fn is_compressed(&self) -> bool
Whether the texture format is compressed or uncompressed
Sourcepub fn pixel_data_offset(&self, coords: UVec3) -> Option<usize>
pub fn pixel_data_offset(&self, coords: UVec3) -> Option<usize>
Compute the byte offset where the data of a specific pixel is stored
Returns None if the provided coordinates are out of bounds.
For 2D textures, Z is the layer number. For 1D textures, Y and Z are ignored.
Sourcepub fn pixel_bytes(&self, coords: UVec3) -> Option<&[u8]>
pub fn pixel_bytes(&self, coords: UVec3) -> Option<&[u8]>
Get a reference to the data bytes where a specific pixel’s value is stored
Sourcepub fn pixel_bytes_mut(&mut self, coords: UVec3) -> Option<&mut [u8]>
pub fn pixel_bytes_mut(&mut self, coords: UVec3) -> Option<&mut [u8]>
Get a mutable reference to the data bytes where a specific pixel’s value is stored
Sourcepub fn get_color_at_1d(&self, x: u32) -> Result<Color, TextureAccessError>
pub fn get_color_at_1d(&self, x: u32) -> Result<Color, TextureAccessError>
Read the color of a specific pixel (1D texture).
See get_color_at for more details.
Sourcepub fn get_color_at(&self, x: u32, y: u32) -> Result<Color, TextureAccessError>
pub fn get_color_at(&self, x: u32, y: u32) -> Result<Color, TextureAccessError>
Read the color of a specific pixel (2D texture).
This function will find the raw byte data of a specific pixel and
decode it into a user-friendly Color struct for you.
Supports many of the common TextureFormats:
- RGBA/BGRA 8-bit unsigned integer, both sRGB and Linear
- 16-bit and 32-bit unsigned integer
- 16-bit and 32-bit float
Be careful: as the data is converted to Color (which uses f32 internally),
there may be issues with precision when using non-f32 TextureFormats.
If you read a value you previously wrote using set_color_at, it will not match.
If you are working with a 32-bit integer TextureFormat, the value will be
inaccurate (as f32 does not have enough bits to represent it exactly).
Single channel (R) formats are assumed to represent grayscale, so the value
will be copied to all three RGB channels in the resulting Color.
Other TextureFormats are unsupported, such as:
- block-compressed formats
- non-byte-aligned formats like 10-bit
- signed integer formats
Sourcepub fn get_color_at_3d(
&self,
x: u32,
y: u32,
z: u32,
) -> Result<Color, TextureAccessError>
pub fn get_color_at_3d( &self, x: u32, y: u32, z: u32, ) -> Result<Color, TextureAccessError>
Read the color of a specific pixel (2D texture with layers or 3D texture).
See get_color_at for more details.
Sourcepub fn set_color_at_1d(
&mut self,
x: u32,
color: Color,
) -> Result<(), TextureAccessError>
pub fn set_color_at_1d( &mut self, x: u32, color: Color, ) -> Result<(), TextureAccessError>
Change the color of a specific pixel (1D texture).
See set_color_at for more details.
Sourcepub fn set_color_at(
&mut self,
x: u32,
y: u32,
color: Color,
) -> Result<(), TextureAccessError>
pub fn set_color_at( &mut self, x: u32, y: u32, color: Color, ) -> Result<(), TextureAccessError>
Change the color of a specific pixel (2D texture).
This function will find the raw byte data of a specific pixel and
change it according to a Color you provide. The Color struct
will be encoded into the Image’s TextureFormat.
Supports many of the common TextureFormats:
- RGBA/BGRA 8-bit unsigned integer, both sRGB and Linear
- 16-bit and 32-bit unsigned integer (with possibly-limited precision, as
Colorusesf32) - 16-bit and 32-bit float
Be careful: writing to non-f32 TextureFormats is lossy! The data has to be converted,
so if you read it back using get_color_at, the Color you get will not equal the value
you used when writing it using this function.
For R and RG formats, only the respective values from the linear RGB Color will be used.
Other TextureFormats are unsupported, such as:
- block-compressed formats
- non-byte-aligned formats like 10-bit
- signed integer formats
Sourcepub fn set_color_at_3d(
&mut self,
x: u32,
y: u32,
z: u32,
color: Color,
) -> Result<(), TextureAccessError>
pub fn set_color_at_3d( &mut self, x: u32, y: u32, z: u32, color: Color, ) -> Result<(), TextureAccessError>
Change the color of a specific pixel (2D texture with layers or 3D texture).
See set_color_at for more details.
Source§impl Image
impl Image
Sourcepub fn from_dynamic(
dyn_img: DynamicImage,
is_srgb: bool,
asset_usage: RenderAssetUsages,
) -> Image
pub fn from_dynamic( dyn_img: DynamicImage, is_srgb: bool, asset_usage: RenderAssetUsages, ) -> Image
Converts a DynamicImage to an Image.
Sourcepub fn try_into_dynamic(self) -> Result<DynamicImage, IntoDynamicImageError>
pub fn try_into_dynamic(self) -> Result<DynamicImage, IntoDynamicImageError>
Convert a Image to a DynamicImage. Useful for editing image
data. Not all TextureFormat are covered, therefore it will return an
error if the format is unsupported. Supported formats are:
TextureFormat::R8UnormTextureFormat::Rg8UnormTextureFormat::Rgba8UnormSrgbTextureFormat::Bgra8UnormSrgb
To convert Image to a different format see: Image::convert.
Trait Implementations§
Source§impl FromReflect for Image
impl FromReflect for Image
Source§fn from_reflect(reflect: &(dyn PartialReflect + 'static)) -> Option<Image>
fn from_reflect(reflect: &(dyn PartialReflect + 'static)) -> Option<Image>
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetTypeRegistration for Image
impl GetTypeRegistration for Image
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.Source§fn register_type_dependencies(_registry: &mut TypeRegistry)
fn register_type_dependencies(_registry: &mut TypeRegistry)
Source§impl PartialReflect for Image
impl PartialReflect for Image
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Image>) -> ReflectOwned
fn reflect_owned(self: Box<Image>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Image>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Image>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<Image>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Image>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
reflect_clone. To convert reflected values to dynamic ones, use to_dynamic.Self into its dynamic representation. Read moreSource§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn reflect_partial_eq(
&self,
_value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, _value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for Image
impl Reflect for Image
Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<Image>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Image>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl TypePath for Image
impl TypePath for Image
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl VisitAssetDependencies for Image
impl VisitAssetDependencies for Image
fn visit_dependencies(&self, visit: &mut impl FnMut(UntypedAssetId))
impl Asset for Image
Auto Trait Implementations§
impl Freeze for Image
impl RefUnwindSafe for Image
impl Send for Image
impl Sync for Image
impl Unpin for Image
impl UnwindSafe for Image
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.Source§impl<A> AssetContainer for Awhere
A: Asset,
impl<A> AssetContainer for Awhere
A: Asset,
fn insert(self: Box<A>, id: UntypedAssetId, world: &mut World)
fn asset_type_name(&self) -> &'static str
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more