1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
use densevec::Key; #[derive(Clone,Copy,Debug,Component,Eq,PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub struct TextureRef{id: usize} impl Key for TextureRef{ fn to_usize(self) -> usize{ self.id } fn from_usize(id: usize) -> TextureRef{ TextureRef{id} } } #[derive(Clone,Copy,Debug,Component,Eq,PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub struct CubemapRef{id: usize} impl Key for CubemapRef{ fn to_usize(self) -> usize{ self.id } fn from_usize(id: usize) -> CubemapRef{ CubemapRef{id} } } #[derive(Clone,Copy,Debug,Component,Eq,PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub struct SamplerRef{id: usize} impl Key for SamplerRef{ fn to_usize(self) -> usize{ self.id } fn from_usize(id: usize) -> SamplerRef{ SamplerRef{id} } } #[derive(Clone,Debug,Copy)] #[repr(i32)] pub enum Wrap{ Repeat = 0, Extend = 1, Clip = 2, } #[derive(Clone,Debug,Copy)] #[repr(i32)] pub enum Filter{ Nearest = 0, Linear = 1, NearestMipNearest = 2, NearestMipLinear = 3, LinearMipNearest = 4, LinearMipLinear = 5, } pub struct Sampler{ pub wrap: Wrap, pub minfilter: Filter, pub magfilter: Filter, } #[derive(Debug,Clone,Copy,Component,Eq,PartialEq, Ord, Hash, PartialOrd, Serialize, Deserialize)] pub struct TextureSampler{ pub texture: TextureRef, pub sampler: Option<SamplerRef>, } impl From<TextureRef> for TextureSampler{ fn from(texture: TextureRef) -> TextureSampler{ TextureSampler{ texture, sampler: None, } } } impl From<TextureRef> for Option<TextureSampler>{ fn from(texture: TextureRef) -> Option<TextureSampler>{ Some(TextureSampler{ texture, sampler: None, }) } }