#[repr(C)]pub struct TextureDescriptor<L, V> {
pub label: L,
pub size: Extent3d,
pub mip_level_count: u32,
pub sample_count: u32,
pub dimension: TextureDimension,
pub format: TextureFormat,
pub usage: TextureUsages,
pub view_formats: V,
}
Expand description
Describes a Texture
.
Corresponds to WebGPU GPUTextureDescriptor
.
Fields§
§label: L
Debug label of the texture. This will show up in graphics debuggers for easy identification.
size: Extent3d
Size of the texture. All components must be greater than zero. For a regular 1D/2D texture, the unused sizes will be 1. For 2DArray textures, Z is the number of 2D textures in that array.
mip_level_count: u32
Mip count of texture. For a texture with no extra mips, this must be 1.
sample_count: u32
Sample count of texture. If this is not 1, texture must have BindingType::Texture::multisampled
set to true.
dimension: TextureDimension
Dimensions of the texture.
format: TextureFormat
Format of the texture.
usage: TextureUsages
Allowed usages of the texture. If used in other ways, the operation will panic.
view_formats: V
Specifies what view formats will be allowed when calling create_view() on this texture.
View formats of the same format as the texture are always allowed.
Note: currently, only the srgb-ness is allowed to change. (ex: Rgba8Unorm texture + Rgba8UnormSrgb view)
Implementations§
Source§impl<L, V> TextureDescriptor<L, V>
impl<L, V> TextureDescriptor<L, V>
Sourcepub fn map_label<K>(&self, fun: impl FnOnce(&L) -> K) -> TextureDescriptor<K, V>where
V: Clone,
pub fn map_label<K>(&self, fun: impl FnOnce(&L) -> K) -> TextureDescriptor<K, V>where
V: Clone,
Takes a closure and maps the label of the texture descriptor into another.
Sourcepub fn map_label_and_view_formats<K, M>(
&self,
l_fun: impl FnOnce(&L) -> K,
v_fun: impl FnOnce(V) -> M,
) -> TextureDescriptor<K, M>where
V: Clone,
pub fn map_label_and_view_formats<K, M>(
&self,
l_fun: impl FnOnce(&L) -> K,
v_fun: impl FnOnce(V) -> M,
) -> TextureDescriptor<K, M>where
V: Clone,
Maps the label and view_formats of the texture descriptor into another.
Sourcepub fn mip_level_size(&self, level: u32) -> Option<Extent3d>
pub fn mip_level_size(&self, level: u32) -> Option<Extent3d>
Calculates the extent at a given mip level.
If the given mip level is larger than possible, returns None.
Treats the depth as part of the mipmaps. If calculating for a 2DArray texture, which does not mipmap depth, set depth to 1.
let desc = TextureDescriptor {
label: (),
size: wgpu::Extent3d { width: 100, height: 60, depth_or_array_layers: 1 },
mip_level_count: 7,
sample_count: 1,
dimension: wgpu::TextureDimension::D3,
format: wgpu::TextureFormat::Rgba8Sint,
usage: wgpu::TextureUsages::empty(),
view_formats: &[],
};
assert_eq!(desc.mip_level_size(0), Some(wgpu::Extent3d { width: 100, height: 60, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(1), Some(wgpu::Extent3d { width: 50, height: 30, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(2), Some(wgpu::Extent3d { width: 25, height: 15, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(3), Some(wgpu::Extent3d { width: 12, height: 7, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(4), Some(wgpu::Extent3d { width: 6, height: 3, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(5), Some(wgpu::Extent3d { width: 3, height: 1, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(6), Some(wgpu::Extent3d { width: 1, height: 1, depth_or_array_layers: 1 }));
assert_eq!(desc.mip_level_size(7), None);
Sourcepub fn compute_render_extent(&self, mip_level: u32) -> Extent3d
pub fn compute_render_extent(&self, mip_level: u32) -> Extent3d
Computes the render extent of this texture.
https://gpuweb.github.io/gpuweb/#abstract-opdef-compute-render-extent
Sourcepub fn array_layer_count(&self) -> u32
pub fn array_layer_count(&self) -> u32
Returns the number of array layers.
https://gpuweb.github.io/gpuweb/#abstract-opdef-array-layer-count
Trait Implementations§
Source§impl<L: Clone, V: Clone> Clone for TextureDescriptor<L, V>
impl<L: Clone, V: Clone> Clone for TextureDescriptor<L, V>
Source§fn clone(&self) -> TextureDescriptor<L, V>
fn clone(&self) -> TextureDescriptor<L, V>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'de, L, V> Deserialize<'de> for TextureDescriptor<L, V>where
L: Deserialize<'de>,
V: Deserialize<'de>,
impl<'de, L, V> Deserialize<'de> for TextureDescriptor<L, V>where
L: Deserialize<'de>,
V: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<L, V> Serialize for TextureDescriptor<L, V>
impl<L, V> Serialize for TextureDescriptor<L, V>
impl<L: Eq, V: Eq> Eq for TextureDescriptor<L, V>
impl<L, V> StructuralPartialEq for TextureDescriptor<L, V>
Auto Trait Implementations§
impl<L, V> Freeze for TextureDescriptor<L, V>
impl<L, V> RefUnwindSafe for TextureDescriptor<L, V>where
L: RefUnwindSafe,
V: RefUnwindSafe,
impl<L, V> Send for TextureDescriptor<L, V>
impl<L, V> Sync for TextureDescriptor<L, V>
impl<L, V> Unpin for TextureDescriptor<L, V>
impl<L, V> UnwindSafe for TextureDescriptor<L, V>where
L: UnwindSafe,
V: UnwindSafe,
Blanket Implementations§
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)