use anyhow::Result; use std::path::Path; pub struct ShaderManager { shader_dir: String, } impl ShaderManager { pub fn new(shader_dir: &str) -> Self { Self { shader_dir: shader_dir.to_string(), } } pub fn load_shader(&self, name: &str) -> Result { let path = Path::new(&self.shader_dir).join(name); std::fs::read_to_string(path).map_err(|e| e.into()) } pub fn watch_shaders(&self) -> Result<()> { // TODO: Implement shader hot-reloading with notify crate Ok(()) } }