use shaderc::ShaderKind::{Fragment, Vertex};
use shaderc::{Compiler, Error};
use wgpu::ShaderModule;
pub struct ShaderManager {
pub vert_3122: ShaderModule,
pub vert_32: ShaderModule,
pub vert_322: ShaderModule,
pub vert_3222: ShaderModule,
pub frag_flat_round: ShaderModule,
pub frag_shaded_square: ShaderModule,
pub frag_shaded_round: ShaderModule,
}
impl ShaderManager {
pub fn new(device: &wgpu::Device) -> Result<Self, Error> {
let mut compiler = Compiler::new().unwrap();
let fname = "shaders/scaled3122.vert";
let source = include_str!("shaders/scaled3122.vert");
let artifact = compiler.compile_into_spirv(source, Vertex, fname, "main", None)?;
let vert_3122 = device.create_shader_module(&artifact.as_binary());
let fname = "shaders/scaled32.vert";
let source = include_str!("shaders/scaled32.vert");
let artifact = compiler.compile_into_spirv(source, Vertex, fname, "main", None)?;
let vert_32 = device.create_shader_module(&artifact.as_binary());
let fname = "shaders/scaled322.vert";
let source = include_str!("shaders/scaled322.vert");
let artifact = compiler.compile_into_spirv(source, Vertex, fname, "main", None)?;
let vert_322 = device.create_shader_module(&artifact.as_binary());
let fname = "shaders/scaled3222.vert";
let source = include_str!("shaders/scaled3222.vert");
let artifact = compiler.compile_into_spirv(source, Vertex, fname, "main", None)?;
let vert_3222 = device.create_shader_module(&artifact.as_binary());
let fname = "shaders/flat_round.frag";
let source = include_str!("shaders/flat_round.frag");
let artifact = compiler.compile_into_spirv(source, Fragment, fname, "main", None)?;
let frag_flat_round = device.create_shader_module(&artifact.as_binary());
let fname = "shaders/shaded_square.frag";
let source = include_str!("shaders/shaded_square.frag");
let artifact = compiler.compile_into_spirv(source, Fragment, fname, "main", None)?;
let frag_shaded_square = device.create_shader_module(&artifact.as_binary());
let fname = "shaders/shaded_round.frag";
let source = include_str!("shaders/shaded_round.frag");
let artifact = compiler.compile_into_spirv(source, Fragment, fname, "main", None)?;
let frag_shaded_round = device.create_shader_module(&artifact.as_binary());
Ok(ShaderManager {
vert_3122,
vert_32,
vert_322,
vert_3222,
frag_flat_round,
frag_shaded_square,
frag_shaded_round,
})
}
}