Skip to main content

pebble/wgpu/
samplers.rs

1#[derive(Clone, Copy, PartialEq, Eq, Hash)]
2pub enum SamplerKind {
3    LinearRepeat,
4    LinearClamp,
5    Nearest,
6}
7
8impl SamplerKind {
9    /// Pure conversion to a wgpu descriptor. You still call
10    /// `device.create_sampler(&kind.descriptor())` yourself, in your own
11    /// `LazyResource::construct` — this only fixes the handful of
12    /// address-mode/filter combinations so you don't re-derive them.
13    pub fn descriptor(&self) -> wgpu::SamplerDescriptor<'static> {
14        match self {
15            SamplerKind::LinearRepeat => wgpu::SamplerDescriptor {
16                address_mode_u: wgpu::AddressMode::Repeat,
17                address_mode_v: wgpu::AddressMode::Repeat,
18                address_mode_w: wgpu::AddressMode::Repeat,
19                mag_filter: wgpu::FilterMode::Linear,
20                min_filter: wgpu::FilterMode::Linear,
21                mipmap_filter: wgpu::MipmapFilterMode::Linear,
22                ..Default::default()
23            },
24            SamplerKind::LinearClamp => wgpu::SamplerDescriptor {
25                address_mode_u: wgpu::AddressMode::ClampToEdge,
26                address_mode_v: wgpu::AddressMode::ClampToEdge,
27                address_mode_w: wgpu::AddressMode::ClampToEdge,
28                mag_filter: wgpu::FilterMode::Linear,
29                min_filter: wgpu::FilterMode::Linear,
30                mipmap_filter: wgpu::MipmapFilterMode::Linear,
31                ..Default::default()
32            },
33            SamplerKind::Nearest => wgpu::SamplerDescriptor {
34                mag_filter: wgpu::FilterMode::Nearest,
35                min_filter: wgpu::FilterMode::Nearest,
36                mipmap_filter: wgpu::MipmapFilterMode::Linear,
37                ..Default::default()
38            },
39        }
40    }
41}