1#[derive(Clone, Copy, PartialEq, Eq, Hash)]
2pub enum SamplerKind {
3 LinearRepeat,
4 LinearClamp,
5 LinearClampNoMip,
11 Nearest,
12 NearestClampBorder,
18 CompareLess,
27}
28
29impl SamplerKind {
30 pub fn descriptor(&self) -> wgpu::SamplerDescriptor<'static> {
35 match self {
36 SamplerKind::LinearRepeat => wgpu::SamplerDescriptor {
37 address_mode_u: wgpu::AddressMode::Repeat,
38 address_mode_v: wgpu::AddressMode::Repeat,
39 address_mode_w: wgpu::AddressMode::Repeat,
40 mag_filter: wgpu::FilterMode::Linear,
41 min_filter: wgpu::FilterMode::Linear,
42 mipmap_filter: wgpu::MipmapFilterMode::Linear,
43 ..Default::default()
44 },
45 SamplerKind::LinearClamp => wgpu::SamplerDescriptor {
46 address_mode_u: wgpu::AddressMode::ClampToEdge,
47 address_mode_v: wgpu::AddressMode::ClampToEdge,
48 address_mode_w: wgpu::AddressMode::ClampToEdge,
49 mag_filter: wgpu::FilterMode::Linear,
50 min_filter: wgpu::FilterMode::Linear,
51 mipmap_filter: wgpu::MipmapFilterMode::Linear,
52 ..Default::default()
53 },
54 SamplerKind::LinearClampNoMip => wgpu::SamplerDescriptor {
55 address_mode_u: wgpu::AddressMode::ClampToEdge,
56 address_mode_v: wgpu::AddressMode::ClampToEdge,
57 address_mode_w: wgpu::AddressMode::ClampToEdge,
58 mag_filter: wgpu::FilterMode::Linear,
59 min_filter: wgpu::FilterMode::Linear,
60 mipmap_filter: wgpu::MipmapFilterMode::Linear,
61 lod_min_clamp: 0.0,
62 lod_max_clamp: 0.0,
63 ..Default::default()
64 },
65 SamplerKind::Nearest => wgpu::SamplerDescriptor {
66 mag_filter: wgpu::FilterMode::Nearest,
67 min_filter: wgpu::FilterMode::Nearest,
68 mipmap_filter: wgpu::MipmapFilterMode::Linear,
69 ..Default::default()
70 },
71 SamplerKind::NearestClampBorder => wgpu::SamplerDescriptor {
72 address_mode_u: wgpu::AddressMode::ClampToBorder,
73 address_mode_v: wgpu::AddressMode::ClampToBorder,
74 address_mode_w: wgpu::AddressMode::ClampToBorder,
75 mag_filter: wgpu::FilterMode::Nearest,
76 min_filter: wgpu::FilterMode::Nearest,
77 mipmap_filter: wgpu::MipmapFilterMode::Nearest,
78 border_color: Some(wgpu::SamplerBorderColor::OpaqueWhite),
79 ..Default::default()
80 },
81 SamplerKind::CompareLess => wgpu::SamplerDescriptor {
82 address_mode_u: wgpu::AddressMode::ClampToEdge,
83 address_mode_v: wgpu::AddressMode::ClampToEdge,
84 address_mode_w: wgpu::AddressMode::ClampToEdge,
85 mag_filter: wgpu::FilterMode::Linear,
86 min_filter: wgpu::FilterMode::Linear,
87 mipmap_filter: wgpu::MipmapFilterMode::Linear,
88 compare: Some(wgpu::CompareFunction::Less),
89 ..Default::default()
90 },
91 }
92 }
93}