Struct wgpu::Extent3d [−][src]
Extent of a texture related operation.
Fields
width: u32
height: u32
depth: u32
Implementations
impl Extent3d
[src]
pub fn physical_size(&self, format: TextureFormat) -> Extent3d
[src]
Calculates the physical size is backing an texture of the given format and extent. This includes padding to the block width and height of the format.
This is the texture extent that you must upload at when uploading to mipmaps of compressed textures.
let format = wgpu::TextureFormat::Bc1RgbaUnormSrgb; // 4x4 blocks assert_eq!( wgpu::Extent3d { width: 7, height: 7, depth: 1 }.physical_size(format), wgpu::Extent3d { width: 8, height: 8, depth: 1 } ); // Doesn't change, already aligned assert_eq!( wgpu::Extent3d { width: 8, height: 8, depth: 1 }.physical_size(format), wgpu::Extent3d { width: 8, height: 8, depth: 1 } ); let format = wgpu::TextureFormat::Astc8x5RgbaUnorm; // 8x5 blocks assert_eq!( wgpu::Extent3d { width: 7, height: 7, depth: 1 }.physical_size(format), wgpu::Extent3d { width: 8, height: 10, depth: 1 } );
pub fn max_mips(&self) -> u8
[src]
Calculates the maximum possible count of mipmaps.
Treats the depth as part of the mipmaps. If calculating for a 2DArray texture, which does not mipmap depth, set depth to 1.
assert_eq!(wgpu::Extent3d { width: 1, height: 1, depth: 1 }.max_mips(), 1); assert_eq!(wgpu::Extent3d { width: 60, height: 60, depth: 1 }.max_mips(), 6); assert_eq!(wgpu::Extent3d { width: 240, height: 1, depth: 1 }.max_mips(), 8);
pub fn at_mip_level(&self, level: u8) -> Option<Extent3d>
[src]
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 extent = wgpu::Extent3d { width: 100, height: 60, depth: 1 }; assert_eq!(extent.at_mip_level(0), Some(wgpu::Extent3d { width: 100, height: 60, depth: 1 })); assert_eq!(extent.at_mip_level(1), Some(wgpu::Extent3d { width: 50, height: 30, depth: 1 })); assert_eq!(extent.at_mip_level(2), Some(wgpu::Extent3d { width: 25, height: 15, depth: 1 })); assert_eq!(extent.at_mip_level(3), Some(wgpu::Extent3d { width: 12, height: 7, depth: 1 })); assert_eq!(extent.at_mip_level(4), Some(wgpu::Extent3d { width: 6, height: 3, depth: 1 })); assert_eq!(extent.at_mip_level(5), Some(wgpu::Extent3d { width: 3, height: 1, depth: 1 })); assert_eq!(extent.at_mip_level(6), Some(wgpu::Extent3d { width: 1, height: 1, depth: 1 })); assert_eq!(extent.at_mip_level(7), None);
Trait Implementations
impl Clone for Extent3d
[src]
impl Copy for Extent3d
[src]
impl Debug for Extent3d
[src]
impl Default for Extent3d
[src]
impl<'de> Deserialize<'de> for Extent3d
[src]
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<Extent3d, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
[src]
__deserializer: __D
) -> Result<Extent3d, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
impl Eq for Extent3d
[src]
impl Hash for Extent3d
[src]
pub fn hash<__H>(&self, state: &mut __H) where
__H: Hasher,
[src]
__H: Hasher,
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl PartialEq<Extent3d> for Extent3d
[src]
impl Serialize for Extent3d
[src]
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
[src]
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
impl StructuralEq for Extent3d
[src]
impl StructuralPartialEq for Extent3d
[src]
Auto Trait Implementations
impl RefUnwindSafe for Extent3d
[src]
impl Send for Extent3d
[src]
impl Sync for Extent3d
[src]
impl Unpin for Extent3d
[src]
impl UnwindSafe for Extent3d
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CallHasher for T where
T: Hash,
T: Hash,
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> Downcast<T> for T
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
pub fn equivalent(&self, key: &K) -> bool
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.