A modern Rust GPU library that deliberately sheds legacy baggage. Goldy targets only modern GPU APIs (Vulkan 1.4+, DX12, Metal Tier2+) and can therefore be significantly simpler than libraries that must maintain backward compatibility.
use goldy::{Instance, DeviceType, Buffer, DataAccess, Color, CommandEncoder, FrameOutput, TextureFormat};
fn main() -> anyhow::Result<()> {
let instance = Instance::new()?;
let device = instance.create_device(DeviceType::DiscreteGpu)?;
let frame = FrameOutput::new(&device, 800, 600, TextureFormat::Rgba8Unorm);
let mut encoder = CommandEncoder::new();
{
let mut pass = encoder.begin_render_pass();
pass.clear(Color::CORNFLOWER_BLUE);
}
let pixels = frame.render(encoder)?;
Ok(())
}| Attribute | Description |
|---|---|
| Rust-native | Idiomatic Rust API, not a wrapper around C |
| Modern-only | Vulkan 1.4+, DX12, Metal Tier 2 |
| Slang shaders | Single shader language for all backends |
| Legacy-free | No OpenGL, no Vulkan <1.4, no OpenCL |
| Unified | Graphics and compute in one API |
| Fast-moving | Not a standard—can iterate quickly |
[dependencies]
goldy = "0.1"Goldy uses Slang for shader compilation. The build script automatically downloads Slang 2026.4 during compilation. You can also:
- Set
GOLDY_SLANG_PATHto use a custom Slang installation - Run
slang/download.shto manually download vendored binaries
For FFI bindings (Python, .NET, C++), Slang libraries are bundled automatically by the respective build scripts. See PACKAGING.md for architecture details and DEBUGGING.md for troubleshooting.
Optional Rust vs Slang struct layout checks at shader compile time: set GOLDY_VALIDATE_LAYOUTS=1 and pass LayoutCheck data from #[derive(LayoutCheckable)] into ShaderModule::from_slang_with_options (see DEBUGGING.md and the gradient / checkerboard examples).
Run the interactive examples:
cargo run --example triangle --release # Basic triangle
cargo run --example digital_clock --release # 7-segment clock
cargo run --example plasma --release # Demoscene plasma
cargo run --example mandelbrot --release # Fractal explorer
cargo run --example starfield --release # 3D starfield
cargo run --example particles --release # Rain/snowBy default, Goldy uses DX12 on Windows and Vulkan on Linux. Override with GOLDY_BACKEND:
# Run with Vulkan backend (on Windows)
GOLDY_BACKEND=vulkan cargo run --example triangle --release
# Run with DX12 backend
GOLDY_BACKEND=dx12 cargo run --example triangle --releaseSee all examples.
Goldy is inspired by Sebastian Aaltonen's "No Graphics API" vision of what's possible with modern GPU hardware. By targeting only modern GPUs (2018+), Goldy can:
- Use dynamic rendering (no render pass objects)
- Use bindless descriptors (no descriptor sets)
- Assume coherent caches (simpler synchronization)
- Provide a dramatically simpler API
Goldy is also inspired by:
- Wayland's compositor architecture
- Ralph Levien's "Requiem for piet-gpu-hal"
- Slang's vision for unified shader language
- WGPU
- This paper on GPU abstractions: https://www.kom.tu-darmstadt.de/papers/KCGS17.pdf
Read more in Design Philosophy.
| Platform | Minimum |
|---|---|
| NVIDIA | RTX 2000 / GTX 1600 (2018+) |
| AMD | RDNA 1 / RX 5000 (2019+) |
| Intel | Xe / Alchemist (2022+) |
| Apple | M1 / A14 (2020+) |
Before submitting a PR, run the CI checks locally:
cargo fmt --all -- --check
cargo clippy -- -D warnings
cargo testMIT License - see LICENSE for details.
Mohamed Koubaa
Contributions welcome! See CONTRIBUTING.
