use super::*;
#[derive(Debug, Clone, Copy, Hash, Default, PartialEq, Eq)]
pub enum SamplerMode {
#[default]
Repeat,
ClampToBorder,
ClampToEdge,
Mirror,
}
#[derive(Debug, Clone, Copy, Hash, Default, PartialEq, Eq)]
pub enum SamplerFilter {
Nearest,
#[default]
Linear,
}
#[derive(Debug, Clone, Copy, Hash, Default, PartialEq, Eq)]
pub enum MipSamplerFilter {
Nearest,
#[default]
Linear,
}
#[derive(Default, Debug)]
pub struct GetSamplerExt {
pub min_filter: SamplerFilter,
pub mag_filter: SamplerFilter,
pub mip_filter: MipSamplerFilter,
pub u_mode: SamplerMode,
pub v_mode: SamplerMode,
pub min_lod: Option<f32>,
pub max_lod: Option<f32>,
}
impl Context {
pub fn get_sampler(&mut self, ext: Option<GetSamplerExt>) -> GResult<SamplerId> {
match self {
Self::Vulkan(vk) => vk.get_sampler(ext),
Self::WebGpu(wgpu) => wgpu.get_sampler(ext),
}
}
}