1#[derive(Clone, Copy, PartialEq, Eq, Hash)]
2pub enum SamplerKind {
3 LinearRepeat,
4 LinearClamp,
5 LinearClampNoMip,
11 Nearest,
12}
13
14impl SamplerKind {
15 pub fn descriptor(&self) -> wgpu::SamplerDescriptor<'static> {
20 match self {
21 SamplerKind::LinearRepeat => wgpu::SamplerDescriptor {
22 address_mode_u: wgpu::AddressMode::Repeat,
23 address_mode_v: wgpu::AddressMode::Repeat,
24 address_mode_w: wgpu::AddressMode::Repeat,
25 mag_filter: wgpu::FilterMode::Linear,
26 min_filter: wgpu::FilterMode::Linear,
27 mipmap_filter: wgpu::MipmapFilterMode::Linear,
28 ..Default::default()
29 },
30 SamplerKind::LinearClamp => wgpu::SamplerDescriptor {
31 address_mode_u: wgpu::AddressMode::ClampToEdge,
32 address_mode_v: wgpu::AddressMode::ClampToEdge,
33 address_mode_w: wgpu::AddressMode::ClampToEdge,
34 mag_filter: wgpu::FilterMode::Linear,
35 min_filter: wgpu::FilterMode::Linear,
36 mipmap_filter: wgpu::MipmapFilterMode::Linear,
37 ..Default::default()
38 },
39 SamplerKind::LinearClampNoMip => wgpu::SamplerDescriptor {
40 address_mode_u: wgpu::AddressMode::ClampToEdge,
41 address_mode_v: wgpu::AddressMode::ClampToEdge,
42 address_mode_w: wgpu::AddressMode::ClampToEdge,
43 mag_filter: wgpu::FilterMode::Linear,
44 min_filter: wgpu::FilterMode::Linear,
45 mipmap_filter: wgpu::MipmapFilterMode::Linear,
46 lod_min_clamp: 0.0,
47 lod_max_clamp: 0.0,
48 ..Default::default()
49 },
50 SamplerKind::Nearest => wgpu::SamplerDescriptor {
51 mag_filter: wgpu::FilterMode::Nearest,
52 min_filter: wgpu::FilterMode::Nearest,
53 mipmap_filter: wgpu::MipmapFilterMode::Linear,
54 ..Default::default()
55 },
56 }
57 }
58}