Crates.io | hotglsl |
lib.rs | hotglsl |
version | 0.2.0 |
source | src |
created_at | 2020-03-21 16:55:31.298447 |
updated_at | 2024-01-17 13:37:00.19834 |
description | A simple crate for hotloading GLSL shaders as SPIR-V. |
homepage | https://github.com/nannou-org/hotglsl |
repository | https://github.com/nannou-org/hotglsl.git |
max_upload_size | |
id | 221017 |
size | 30,567 |
A simple crate for hotloading GLSL shaders as SPIR-V.
fn main() {
let shader_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.join("examples")
.join("shaders");
let watch = hotglsl::watch(&shader_dir).unwrap();
println!("Edit the shaders in `examples/shaders/`!");
loop {
watch.await_event().unwrap();
// On some OSes, a whole bunch of events will occur at once. Wait for
// this to happen to avoid compiling our shader(s) twice unnecessarily.
std::thread::sleep(std::time::Duration::from_millis(10));
// Compile each shader that has been touched and produce the result.
for (path, result) in watch.compile_touched().unwrap() {
println!("Tried compiling {:?}:", path);
match result {
Ok(_spirv_bytes) => println!(" Success!"),
Err(e) => println!(" Woopsie!\n{}", e),
}
}
}
}
Allows for watching one or more file and/or directory paths for GLSL shader file changes.
See the GLSL_EXTENSIONS
const for supported GLSL extensions that will be
watched. A hotglsl::Watch
will ignore all events that don't involve a file
with one of these extensions.
Uses the notify
crate for file system events and the glsl-to-spirv
crate for
GLSL->SPIR-V compilation.