Enum wgpu_types::TextureFormat
source · #[repr(C)]pub enum TextureFormat {
Show 75 variants
R8Unorm,
R8Snorm,
R8Uint,
R8Sint,
R16Uint,
R16Sint,
R16Unorm,
R16Snorm,
R16Float,
Rg8Unorm,
Rg8Snorm,
Rg8Uint,
Rg8Sint,
R32Uint,
R32Sint,
R32Float,
Rg16Uint,
Rg16Sint,
Rg16Unorm,
Rg16Snorm,
Rg16Float,
Rgba8Unorm,
Rgba8UnormSrgb,
Rgba8Snorm,
Rgba8Uint,
Rgba8Sint,
Bgra8Unorm,
Bgra8UnormSrgb,
Rgb9e5Ufloat,
Rgb10a2Uint,
Rgb10a2Unorm,
Rg11b10Float,
Rg32Uint,
Rg32Sint,
Rg32Float,
Rgba16Uint,
Rgba16Sint,
Rgba16Unorm,
Rgba16Snorm,
Rgba16Float,
Rgba32Uint,
Rgba32Sint,
Rgba32Float,
Stencil8,
Depth16Unorm,
Depth24Plus,
Depth24PlusStencil8,
Depth32Float,
Depth32FloatStencil8,
NV12,
Bc1RgbaUnorm,
Bc1RgbaUnormSrgb,
Bc2RgbaUnorm,
Bc2RgbaUnormSrgb,
Bc3RgbaUnorm,
Bc3RgbaUnormSrgb,
Bc4RUnorm,
Bc4RSnorm,
Bc5RgUnorm,
Bc5RgSnorm,
Bc6hRgbUfloat,
Bc6hRgbFloat,
Bc7RgbaUnorm,
Bc7RgbaUnormSrgb,
Etc2Rgb8Unorm,
Etc2Rgb8UnormSrgb,
Etc2Rgb8A1Unorm,
Etc2Rgb8A1UnormSrgb,
Etc2Rgba8Unorm,
Etc2Rgba8UnormSrgb,
EacR11Unorm,
EacR11Snorm,
EacRg11Unorm,
EacRg11Snorm,
Astc {
block: AstcBlock,
channel: AstcChannel,
},
}
Expand description
Underlying texture data format.
If there is a conversion in the format (such as srgb -> linear), the conversion listed here is for loading from texture in a shader. When writing to the texture, the opposite conversion takes place.
Corresponds to WebGPU GPUTextureFormat
.
Variants§
R8Unorm
Red channel only. 8 bit integer per channel. [0, 255] converted to/from float [0, 1] in shader.
R8Snorm
Red channel only. 8 bit integer per channel. [-127, 127] converted to/from float [-1, 1] in shader.
R8Uint
Red channel only. 8 bit integer per channel. Unsigned in shader.
R8Sint
Red channel only. 8 bit integer per channel. Signed in shader.
R16Uint
Red channel only. 16 bit integer per channel. Unsigned in shader.
R16Sint
Red channel only. 16 bit integer per channel. Signed in shader.
R16Unorm
Red channel only. 16 bit integer per channel. [0, 65535] converted to/from float [0, 1] in shader.
Features::TEXTURE_FORMAT_16BIT_NORM
must be enabled to use this texture format.
R16Snorm
Red channel only. 16 bit integer per channel. [0, 65535] converted to/from float [-1, 1] in shader.
Features::TEXTURE_FORMAT_16BIT_NORM
must be enabled to use this texture format.
R16Float
Red channel only. 16 bit float per channel. Float in shader.
Rg8Unorm
Red and green channels. 8 bit integer per channel. [0, 255] converted to/from float [0, 1] in shader.
Rg8Snorm
Red and green channels. 8 bit integer per channel. [-127, 127] converted to/from float [-1, 1] in shader.
Rg8Uint
Red and green channels. 8 bit integer per channel. Unsigned in shader.
Rg8Sint
Red and green channels. 8 bit integer per channel. Signed in shader.
R32Uint
Red channel only. 32 bit integer per channel. Unsigned in shader.
R32Sint
Red channel only. 32 bit integer per channel. Signed in shader.
R32Float
Red channel only. 32 bit float per channel. Float in shader.
Rg16Uint
Red and green channels. 16 bit integer per channel. Unsigned in shader.
Rg16Sint
Red and green channels. 16 bit integer per channel. Signed in shader.
Rg16Unorm
Red and green channels. 16 bit integer per channel. [0, 65535] converted to/from float [0, 1] in shader.
Features::TEXTURE_FORMAT_16BIT_NORM
must be enabled to use this texture format.
Rg16Snorm
Red and green channels. 16 bit integer per channel. [0, 65535] converted to/from float [-1, 1] in shader.
Features::TEXTURE_FORMAT_16BIT_NORM
must be enabled to use this texture format.
Rg16Float
Red and green channels. 16 bit float per channel. Float in shader.
Rgba8Unorm
Red, green, blue, and alpha channels. 8 bit integer per channel. [0, 255] converted to/from float [0, 1] in shader.
Rgba8UnormSrgb
Red, green, blue, and alpha channels. 8 bit integer per channel. Srgb-color [0, 255] converted to/from linear-color float [0, 1] in shader.
Rgba8Snorm
Red, green, blue, and alpha channels. 8 bit integer per channel. [-127, 127] converted to/from float [-1, 1] in shader.
Rgba8Uint
Red, green, blue, and alpha channels. 8 bit integer per channel. Unsigned in shader.
Rgba8Sint
Red, green, blue, and alpha channels. 8 bit integer per channel. Signed in shader.
Bgra8Unorm
Blue, green, red, and alpha channels. 8 bit integer per channel. [0, 255] converted to/from float [0, 1] in shader.
Bgra8UnormSrgb
Blue, green, red, and alpha channels. 8 bit integer per channel. Srgb-color [0, 255] converted to/from linear-color float [0, 1] in shader.
Rgb9e5Ufloat
Packed unsigned float with 9 bits mantisa for each RGB component, then a common 5 bits exponent
Rgb10a2Uint
Red, green, blue, and alpha channels. 10 bit integer for RGB channels, 2 bit integer for alpha channel. Unsigned in shader.
Rgb10a2Unorm
Red, green, blue, and alpha channels. 10 bit integer for RGB channels, 2 bit integer for alpha channel. [0, 1023] ([0, 3] for alpha) converted to/from float [0, 1] in shader.
Rg11b10Float
Red, green, and blue channels. 11 bit float with no sign bit for RG channels. 10 bit float with no sign bit for blue channel. Float in shader.
Rg32Uint
Red and green channels. 32 bit integer per channel. Unsigned in shader.
Rg32Sint
Red and green channels. 32 bit integer per channel. Signed in shader.
Rg32Float
Red and green channels. 32 bit float per channel. Float in shader.
Rgba16Uint
Red, green, blue, and alpha channels. 16 bit integer per channel. Unsigned in shader.
Rgba16Sint
Red, green, blue, and alpha channels. 16 bit integer per channel. Signed in shader.
Rgba16Unorm
Red, green, blue, and alpha channels. 16 bit integer per channel. [0, 65535] converted to/from float [0, 1] in shader.
Features::TEXTURE_FORMAT_16BIT_NORM
must be enabled to use this texture format.
Rgba16Snorm
Red, green, blue, and alpha. 16 bit integer per channel. [0, 65535] converted to/from float [-1, 1] in shader.
Features::TEXTURE_FORMAT_16BIT_NORM
must be enabled to use this texture format.
Rgba16Float
Red, green, blue, and alpha channels. 16 bit float per channel. Float in shader.
Rgba32Uint
Red, green, blue, and alpha channels. 32 bit integer per channel. Unsigned in shader.
Rgba32Sint
Red, green, blue, and alpha channels. 32 bit integer per channel. Signed in shader.
Rgba32Float
Red, green, blue, and alpha channels. 32 bit float per channel. Float in shader.
Stencil8
Stencil format with 8 bit integer stencil.
Depth16Unorm
Special depth format with 16 bit integer depth.
Depth24Plus
Special depth format with at least 24 bit integer depth.
Depth24PlusStencil8
Special depth/stencil format with at least 24 bit integer depth and 8 bits integer stencil.
Depth32Float
Special depth format with 32 bit floating point depth.
Depth32FloatStencil8
Special depth/stencil format with 32 bit floating point depth and 8 bits integer stencil.
Features::DEPTH32FLOAT_STENCIL8
must be enabled to use this texture format.
NV12
YUV 4:2:0 chroma subsampled format.
Contains two planes:
- 0: Single 8 bit channel luminance.
- 1: Dual 8 bit channel chrominance at half width and half height.
Valid view formats for luminance are TextureFormat::R8Unorm
.
Valid view formats for chrominance are TextureFormat::Rg8Unorm
.
Width and height must be even.
Features::TEXTURE_FORMAT_NV12
must be enabled to use this texture format.
Bc1RgbaUnorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). 4 color + alpha pallet. 5 bit R + 6 bit G + 5 bit B + 1 bit alpha. [0, 63] ([0, 1] for alpha) converted to/from float [0, 1] in shader.
Also known as DXT1.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc1RgbaUnormSrgb
4x4 block compressed texture. 8 bytes per block (4 bit/px). 4 color + alpha pallet. 5 bit R + 6 bit G + 5 bit B + 1 bit alpha. Srgb-color [0, 63] ([0, 1] for alpha) converted to/from linear-color float [0, 1] in shader.
Also known as DXT1.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc2RgbaUnorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). 4 color pallet. 5 bit R + 6 bit G + 5 bit B + 4 bit alpha. [0, 63] ([0, 15] for alpha) converted to/from float [0, 1] in shader.
Also known as DXT3.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc2RgbaUnormSrgb
4x4 block compressed texture. 16 bytes per block (8 bit/px). 4 color pallet. 5 bit R + 6 bit G + 5 bit B + 4 bit alpha. Srgb-color [0, 63] ([0, 255] for alpha) converted to/from linear-color float [0, 1] in shader.
Also known as DXT3.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc3RgbaUnorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). 4 color pallet + 8 alpha pallet. 5 bit R + 6 bit G + 5 bit B + 8 bit alpha. [0, 63] ([0, 255] for alpha) converted to/from float [0, 1] in shader.
Also known as DXT5.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc3RgbaUnormSrgb
4x4 block compressed texture. 16 bytes per block (8 bit/px). 4 color pallet + 8 alpha pallet. 5 bit R + 6 bit G + 5 bit B + 8 bit alpha. Srgb-color [0, 63] ([0, 255] for alpha) converted to/from linear-color float [0, 1] in shader.
Also known as DXT5.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc4RUnorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). 8 color pallet. 8 bit R. [0, 255] converted to/from float [0, 1] in shader.
Also known as RGTC1.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc4RSnorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). 8 color pallet. 8 bit R. [-127, 127] converted to/from float [-1, 1] in shader.
Also known as RGTC1.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc5RgUnorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). 8 color red pallet + 8 color green pallet. 8 bit RG. [0, 255] converted to/from float [0, 1] in shader.
Also known as RGTC2.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc5RgSnorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). 8 color red pallet + 8 color green pallet. 8 bit RG. [-127, 127] converted to/from float [-1, 1] in shader.
Also known as RGTC2.
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc6hRgbUfloat
4x4 block compressed texture. 16 bytes per block (8 bit/px). Variable sized pallet. 16 bit unsigned float RGB. Float in shader.
Also known as BPTC (float).
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc6hRgbFloat
4x4 block compressed texture. 16 bytes per block (8 bit/px). Variable sized pallet. 16 bit signed float RGB. Float in shader.
Also known as BPTC (float).
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc7RgbaUnorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). Variable sized pallet. 8 bit integer RGBA. [0, 255] converted to/from float [0, 1] in shader.
Also known as BPTC (unorm).
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Bc7RgbaUnormSrgb
4x4 block compressed texture. 16 bytes per block (8 bit/px). Variable sized pallet. 8 bit integer RGBA. Srgb-color [0, 255] converted to/from linear-color float [0, 1] in shader.
Also known as BPTC (unorm).
Features::TEXTURE_COMPRESSION_BC
must be enabled to use this texture format.
Etc2Rgb8Unorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). Complex pallet. 8 bit integer RGB. [0, 255] converted to/from float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
Etc2Rgb8UnormSrgb
4x4 block compressed texture. 8 bytes per block (4 bit/px). Complex pallet. 8 bit integer RGB. Srgb-color [0, 255] converted to/from linear-color float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
Etc2Rgb8A1Unorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). Complex pallet. 8 bit integer RGB + 1 bit alpha. [0, 255] ([0, 1] for alpha) converted to/from float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
Etc2Rgb8A1UnormSrgb
4x4 block compressed texture. 8 bytes per block (4 bit/px). Complex pallet. 8 bit integer RGB + 1 bit alpha. Srgb-color [0, 255] ([0, 1] for alpha) converted to/from linear-color float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
Etc2Rgba8Unorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). Complex pallet. 8 bit integer RGB + 8 bit alpha. [0, 255] converted to/from float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
Etc2Rgba8UnormSrgb
4x4 block compressed texture. 16 bytes per block (8 bit/px). Complex pallet. 8 bit integer RGB + 8 bit alpha. Srgb-color [0, 255] converted to/from linear-color float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
EacR11Unorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). Complex pallet. 11 bit integer R. [0, 255] converted to/from float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
EacR11Snorm
4x4 block compressed texture. 8 bytes per block (4 bit/px). Complex pallet. 11 bit integer R. [-127, 127] converted to/from float [-1, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
EacRg11Unorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). Complex pallet. 11 bit integer R + 11 bit integer G. [0, 255] converted to/from float [0, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
EacRg11Snorm
4x4 block compressed texture. 16 bytes per block (8 bit/px). Complex pallet. 11 bit integer R + 11 bit integer G. [-127, 127] converted to/from float [-1, 1] in shader.
Features::TEXTURE_COMPRESSION_ETC2
must be enabled to use this texture format.
Astc
block compressed texture. 16 bytes per block.
Features TEXTURE_COMPRESSION_ASTC
or TEXTURE_COMPRESSION_ASTC_HDR
must be enabled to use this texture format.
Implementations§
source§impl TextureFormat
impl TextureFormat
sourcepub fn aspect_specific_format(&self, aspect: TextureAspect) -> Option<Self>
pub fn aspect_specific_format(&self, aspect: TextureAspect) -> Option<Self>
Returns the aspect-specific format of the original format
see https://gpuweb.github.io/gpuweb/#abstract-opdef-resolving-gputextureaspect
sourcepub fn is_depth_stencil_component(&self, combined_format: Self) -> bool
pub fn is_depth_stencil_component(&self, combined_format: Self) -> bool
Returns true
if self
is a depth or stencil component of the given
combined depth-stencil format
sourcepub fn is_depth_stencil_format(&self) -> bool
pub fn is_depth_stencil_format(&self) -> bool
Returns true
if the format is a depth and/or stencil format
sourcepub fn is_combined_depth_stencil_format(&self) -> bool
pub fn is_combined_depth_stencil_format(&self) -> bool
Returns true
if the format is a combined depth-stencil format
see https://gpuweb.github.io/gpuweb/#combined-depth-stencil-format
sourcepub fn is_multi_planar_format(&self) -> bool
pub fn is_multi_planar_format(&self) -> bool
Returns true
if the format is a multi-planar format
sourcepub fn has_color_aspect(&self) -> bool
pub fn has_color_aspect(&self) -> bool
Returns true
if the format has a color aspect
sourcepub fn has_depth_aspect(&self) -> bool
pub fn has_depth_aspect(&self) -> bool
Returns true
if the format has a depth aspect
sourcepub fn has_stencil_aspect(&self) -> bool
pub fn has_stencil_aspect(&self) -> bool
Returns true
if the format has a stencil aspect
sourcepub fn size_multiple_requirement(&self) -> (u32, u32)
pub fn size_multiple_requirement(&self) -> (u32, u32)
Returns the size multiple requirement for a texture using this format.
sourcepub fn block_dimensions(&self) -> (u32, u32)
pub fn block_dimensions(&self) -> (u32, u32)
Returns the dimension of a block of texels.
Uncompressed formats have a block dimension of (1, 1)
.
sourcepub fn is_compressed(&self) -> bool
pub fn is_compressed(&self) -> bool
Returns true
for compressed formats.
sourcepub fn required_features(&self) -> Features
pub fn required_features(&self) -> Features
Returns the required features (if any) in order to use the texture.
sourcepub fn guaranteed_format_features(
&self,
device_features: Features
) -> TextureFormatFeatures
pub fn guaranteed_format_features( &self, device_features: Features ) -> TextureFormatFeatures
Returns the format features guaranteed by the WebGPU spec.
Additional features are available if Features::TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES
is enabled.
sourcepub fn sample_type(
&self,
aspect: Option<TextureAspect>,
device_features: Option<Features>
) -> Option<TextureSampleType>
pub fn sample_type( &self, aspect: Option<TextureAspect>, device_features: Option<Features> ) -> Option<TextureSampleType>
Returns the sample type compatible with this format and aspect.
Returns None
only if this is a combined depth-stencil format or a multi-planar format
and TextureAspect::All
or no aspect
was provided.
sourcepub fn block_size(&self, aspect: Option<TextureAspect>) -> Option<u32>
👎Deprecated since 0.19.0: Use block_copy_size
instead.
pub fn block_size(&self, aspect: Option<TextureAspect>) -> Option<u32>
block_copy_size
instead.The number of bytes one texel block occupies during an image copy, if applicable.
Known as the texel block copy footprint.
Note that for uncompressed formats this is the same as the size of a single texel, since uncompressed formats have a block size of 1x1.
Returns None
if any of the following are true:
- the format is a combined depth-stencil and no
aspect
was provided - the format is a multi-planar format and no
aspect
was provided - the format is
Depth24Plus
- the format is
Depth24PlusStencil8
andaspect
is depth.
sourcepub fn block_copy_size(&self, aspect: Option<TextureAspect>) -> Option<u32>
pub fn block_copy_size(&self, aspect: Option<TextureAspect>) -> Option<u32>
The number of bytes one texel block occupies during an image copy, if applicable.
Known as the texel block copy footprint.
Note that for uncompressed formats this is the same as the size of a single texel, since uncompressed formats have a block size of 1x1.
Returns None
if any of the following are true:
- the format is a combined depth-stencil and no
aspect
was provided - the format is a multi-planar format and no
aspect
was provided - the format is
Depth24Plus
- the format is
Depth24PlusStencil8
andaspect
is depth.
sourcepub fn components(&self) -> u8
pub fn components(&self) -> u8
Returns the number of components this format has.
sourcepub fn components_with_aspect(&self, aspect: TextureAspect) -> u8
pub fn components_with_aspect(&self, aspect: TextureAspect) -> u8
Returns the number of components this format has taking into account the aspect
.
The aspect
is only relevant for combined depth-stencil formats and multi-planar formats.
sourcepub fn remove_srgb_suffix(&self) -> TextureFormat
pub fn remove_srgb_suffix(&self) -> TextureFormat
Strips the Srgb
suffix from the given texture format.
sourcepub fn add_srgb_suffix(&self) -> TextureFormat
pub fn add_srgb_suffix(&self) -> TextureFormat
Adds an Srgb
suffix to the given texture format, if the format supports it.
Trait Implementations§
source§impl Clone for TextureFormat
impl Clone for TextureFormat
source§fn clone(&self) -> TextureFormat
fn clone(&self) -> TextureFormat
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for TextureFormat
impl Debug for TextureFormat
source§impl From<TextureFormat> for ColorTargetState
impl From<TextureFormat> for ColorTargetState
source§fn from(format: TextureFormat) -> Self
fn from(format: TextureFormat) -> Self
source§impl Hash for TextureFormat
impl Hash for TextureFormat
source§impl PartialEq for TextureFormat
impl PartialEq for TextureFormat
source§fn eq(&self, other: &TextureFormat) -> bool
fn eq(&self, other: &TextureFormat) -> bool
self
and other
values to be equal, and is used
by ==
.