A tool for experimenting with WGSL shaders, it uses wgpu for rendering, egui for the UI and winit for windowing :-)
- 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
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:
// Define your multi-pass pipeline as a dependency graph:
let passes = vec![
PassDescription::new("buffer_a", &[]), // no inputs
PassDescription::new("buffer_b", &["buffer_a"]), // reads buffer_a
PassDescription::new("buffer_c", &["buffer_b", "buffer_c"]), // reads buffer_b + own previous frame
PassDescription::new("main_image", &["buffer_c"]),
];
let config = ComputeShader::builder()
.with_multi_pass(&passes) // the render graph above
.with_custom_uniforms::<MyParams>() // UI-controllable parameters
.with_mouse() // mouse input
.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.
Ffull screen/minimal screen,Hhide egui
- 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-featuresfor 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
GStreamerpaths (only needed for media features) - then simply use
use cuneus::prelude::*;
- Add
cargo run --release --example *file*- Or download on the releases
| Sinh3D | JFA | Volumetric Passage |
|---|---|---|
![]() Code |
![]() Code |
![]() Code |
| PathTracing Mandelbulb | CNN:EMNIST | Tame Impala |
|---|---|---|
![]() Code |
![]() Code |
![]() Code |
| Buddhabrot | FFT(Butterworth filter) | Clifford |
|---|---|---|
![]() Code |
![]() Code |
![]() Code |
| Block Tower: 3D Game | System | 2d Gaussian Splatting |
|---|---|---|
![]() Code |
![]() Code |
![]() Code |
| SDneuron | path tracer | audio visualizer |
|---|---|---|
![]() Code |
![]() Code |
![]() Code |
| sdvert | tree | rorschach |
|---|---|---|
![]() Code |
![]() Code |
![]() Code |

















