kaffee 0.2.0

Small 2D framework
Documentation
use std::{ops::Deref, sync::Arc};

pub struct Shader(Arc<wgpu::ShaderModule>);

#[derive(Debug, PartialOrd, PartialEq, Copy, Clone)]
pub enum ShaderType {
    Vertex = naga::ShaderStage::Vertex as isize,
    Fragment = naga::ShaderStage::Fragment as isize,
    Compute = naga::ShaderStage::Compute as isize,
}

impl Shader {
    pub(crate) fn new(inner: wgpu::ShaderModule) -> Self {
        Self(Arc::new(inner))
    }
}

impl Into<naga::ShaderStage> for ShaderType {
    fn into(self) -> naga::ShaderStage {
        match self {
            Self::Vertex => naga::ShaderStage::Vertex,
            Self::Fragment => naga::ShaderStage::Fragment,
            Self::Compute => naga::ShaderStage::Compute,
        }
    }
}

impl Deref for Shader {
    type Target = wgpu::ShaderModule;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}