Skip to main content

gcrecomp_runtime/graphics/
shaders.rs

1// Shader management
2use anyhow::Result;
3use wgpu::*;
4
5pub struct ShaderManager {
6    shaders: std::collections::HashMap<String, ShaderModule>,
7}
8
9impl ShaderManager {
10    pub fn new() -> Self {
11        Self {
12            shaders: std::collections::HashMap::new(),
13        }
14    }
15
16    pub fn load_shader(&mut self, device: &Device, name: &str, source: &str) -> Result<()> {
17        let shader = device.create_shader_module(ShaderModuleDescriptor {
18            label: Some(name),
19            source: ShaderSource::Wgsl(source.into()),
20        });
21
22        self.shaders.insert(name.to_string(), shader);
23        Ok(())
24    }
25
26    pub fn get_shader(&self, name: &str) -> Option<&ShaderModule> {
27        self.shaders.get(name)
28    }
29}