use super::Texture; use crate::render::pipeline::state_descriptors::CompareFunction; #[derive(Copy, Clone)] pub struct SamplerDescriptor { pub address_mode_u: AddressMode, pub address_mode_v: AddressMode, pub address_mode_w: AddressMode, pub mag_filter: FilterMode, pub min_filter: FilterMode, pub mipmap_filter: FilterMode, pub lod_min_clamp: f32, pub lod_max_clamp: f32, pub compare_function: Option, } impl From<&Texture> for SamplerDescriptor { fn from(_texture: &Texture) -> Self { SamplerDescriptor { address_mode_u: AddressMode::ClampToEdge, address_mode_v: AddressMode::ClampToEdge, address_mode_w: AddressMode::ClampToEdge, mag_filter: FilterMode::Nearest, min_filter: FilterMode::Linear, mipmap_filter: FilterMode::Nearest, lod_min_clamp: -100.0, lod_max_clamp: 100.0, compare_function: Some(CompareFunction::Always), } } } #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] pub enum AddressMode { ClampToEdge = 0, Repeat = 1, MirrorRepeat = 2, } impl Default for AddressMode { fn default() -> Self { AddressMode::ClampToEdge } } #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] pub enum FilterMode { Nearest = 0, Linear = 1, } impl Default for FilterMode { fn default() -> Self { FilterMode::Nearest } }