
A tool for experimenting with WGSL shaders, it uses wgpu for rendering, egui for the UI and winit for windowing :-)
Current Features
- Hot shader reloading
- Multi-pass, atomics etc
- 3DGS Rendering Inference (PLY Import, radix gpu sort)
- Interactive parameter adjustment, ez media imports through egui
- Easily use HDR textures, videos/webcam via UI
- Audio/Visual synchronization: Spectrum and BPM detection
- Real-time audio synthesis: Generate music directly from wgsl shaders
- Export HQ frames via egui
Builder Pattern
Cuneus uses a declarative builder to configure your entire compute pipeline. You say what you need — the engine handles all bind group layouts, ping-pong buffers, and pipeline wiring:
let passes = vec![
PassDescription::new("buffer_a", &[]), PassDescription::new("buffer_b", &["buffer_a"]), PassDescription::new("buffer_c", &["buffer_b", "buffer_c"]), PassDescription::new("main_image", &["buffer_c"]),
];
let config = ComputeShader::builder()
.with_multi_pass(&passes) .with_custom_uniforms::<MyParams>() .with_mouse() .build();
Dependencies are packed sequentially — &["buffer_b", "buffer_c"] becomes input_texture0 and input_texture1 in WGSL. Self-reference enables cross-frame feedback (ping-pong) automatically. One .dispatch() call runs the entire pipeline. See usage.md for the full guide.
Current look
Keys
F full screen/minimal screen, H hide egui
Usage
- If you want to try your own shaders, check out the usage.md and see BUILD.md.
- Optional Media Support: GStreamer dependencies are optional - use
--no-default-features for lightweight builds with pure GPU compute shaders.
- When using cuneus as a dependency (via
cargo add):
- Add
bytemuck = { version = "1", features = ["derive"] } to dependencies (derive macros can't be re-exported)
- Copy build.rs to your project root to configure
GStreamer paths (only needed for media features)
- then simply use
use cuneus::prelude::*;
Run examples
cargo run --release --example *file*
- Or download on the releases
Gallery
| PathTracing Mandelbulb |
CNN:EMNIST |
Tame Impala |
| Code |
Code |
Code |
| Block Tower: 3D Game |
System |
2d Gaussian Splatting |
| Code |
Code |
Code |