awsm-renderer 0.4.0

awsm-renderer
Documentation
use askama::Template;

use crate::{
    render_passes::coverage::shader::cache_key::ShaderCacheKeyCoverage,
    shaders::{AwsmShaderError, Result},
};

#[derive(Template, Debug, Default)]
#[template(path = "coverage_wgsl/compute.wgsl", whitespace = "minimize")]
pub struct ShaderTemplateCoverage {
    pub multisampled: bool,
}

impl TryFrom<&ShaderCacheKeyCoverage> for ShaderTemplateCoverage {
    type Error = AwsmShaderError;

    fn try_from(value: &ShaderCacheKeyCoverage) -> Result<Self> {
        Ok(Self {
            multisampled: value.multisampled,
        })
    }
}

impl ShaderTemplateCoverage {
    pub fn into_source(self) -> Result<String> {
        self.render().map_err(AwsmShaderError::from)
    }

    pub fn debug_label(&self) -> Option<&str> {
        Some("Coverage")
    }
}