Skip to content

altunenes/cuneus

Repository files navigation

Shader Binary Release crates.io

cuneus sdf

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:

// 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.

Current look

Cuneus IDE Interface

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

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

About

Toy graphics engine for WGSL compute shaders. Features shader hot reload, generating sounds, frame export & audio/video input for live manipulation.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors