gcrecomp_runtime/graphics/
shaders.rs1use 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}