use crate::cache::TextureAsset;
use syrillian_asset::{Cubemap, Texture2D, Texture2DArray};
use wgpu::{
AddressMode, FilterMode, MipmapFilterMode, TextureDimension, TextureFormat, TextureUsages,
TextureViewDimension,
};
impl TextureAsset for Texture2D {
fn layer_count(&self) -> u32 {
1
}
fn flags(&self) -> TextureUsages {
TextureUsages::TEXTURE_BINDING | TextureUsages::COPY_SRC | TextureUsages::COPY_DST
}
fn width(&self) -> u32 {
self.width
}
fn height(&self) -> u32 {
self.height
}
fn format(&self) -> TextureFormat {
self.format
}
fn view_formats(&self) -> &[TextureFormat] {
std::slice::from_ref(&self.format)
}
fn mip_level_count(&self) -> u32 {
1
}
fn sample_count(&self) -> u32 {
1
}
fn dimensions(&self) -> TextureDimension {
TextureDimension::D2
}
fn view_dimension(&self) -> TextureViewDimension {
TextureViewDimension::D2
}
fn repeat_mode(&self) -> AddressMode {
self.repeat_mode
}
fn filter_mode(&self) -> FilterMode {
self.filter_mode
}
fn mip_filter_mode(&self) -> MipmapFilterMode {
self.mip_filter_mode
}
fn data(&self) -> Option<&[u8]> {
self.data.as_deref()
}
fn has_transparency(&self) -> bool {
self.has_transparency
}
}
impl TextureAsset for Texture2DArray {
fn layer_count(&self) -> u32 {
self.array_layers
}
fn flags(&self) -> TextureUsages {
TextureUsages::TEXTURE_BINDING | TextureUsages::COPY_DST | TextureUsages::COPY_SRC
}
fn width(&self) -> u32 {
self.width
}
fn height(&self) -> u32 {
self.height
}
fn format(&self) -> TextureFormat {
self.format
}
fn view_formats(&self) -> &[TextureFormat] {
std::slice::from_ref(&self.format)
}
fn mip_level_count(&self) -> u32 {
1
}
fn sample_count(&self) -> u32 {
1
}
fn dimensions(&self) -> TextureDimension {
TextureDimension::D2
}
fn view_dimension(&self) -> TextureViewDimension {
TextureViewDimension::D2Array
}
fn repeat_mode(&self) -> AddressMode {
self.repeat_mode
}
fn filter_mode(&self) -> FilterMode {
self.filter_mode
}
fn mip_filter_mode(&self) -> MipmapFilterMode {
self.mip_filter_mode
}
fn data(&self) -> Option<&[u8]> {
None
}
fn has_transparency(&self) -> bool {
self.has_transparency
}
}
impl TextureAsset for Cubemap {
fn layer_count(&self) -> u32 {
6
}
fn flags(&self) -> TextureUsages {
TextureUsages::TEXTURE_BINDING | TextureUsages::COPY_DST | TextureUsages::COPY_SRC
}
fn width(&self) -> u32 {
self.width
}
fn height(&self) -> u32 {
self.height
}
fn format(&self) -> TextureFormat {
self.format
}
fn view_formats(&self) -> &[TextureFormat] {
std::slice::from_ref(&self.format)
}
fn mip_level_count(&self) -> u32 {
1
}
fn sample_count(&self) -> u32 {
1
}
fn dimensions(&self) -> TextureDimension {
TextureDimension::D2
}
fn view_dimension(&self) -> TextureViewDimension {
TextureViewDimension::Cube
}
fn repeat_mode(&self) -> AddressMode {
self.repeat_mode
}
fn filter_mode(&self) -> FilterMode {
self.filter_mode
}
fn mip_filter_mode(&self) -> MipmapFilterMode {
self.mip_filter_mode
}
fn data(&self) -> Option<&[u8]> {
self.data.as_deref()
}
fn has_transparency(&self) -> bool {
self.has_transparency
}
}