violet
is a hobby project for experimenting new rendering techniques with 🦀Rust and 🌋Vulkan. Currently it features:
- A ReSTIR-based hybrid-renderer, with real-time ray-traced GI
- SVGF/ReLAX style denoiser, filtering indirect diffuse and specular separately
- Spatial Hash Grid world radiance cache (scratch)
- Reference Path tracer
- glTF model loading
- Render graph (scratch)
(Sponza rendererd with
violet-restir
)
- restir_renderer.rs: render passes for ReSTIR-based indirect lighting.
- shaders
Firstly, you need to install Rust and, if necessary, the Vulkan driver for your graphics card (e.g. nvdia).
Then, you can build and run the violet-restir
app to view the "Sponza" model:
cargo run --bin violet-restir --release -- "./assets/Sponza/Sponza.gltf"
This project benefits from a bunch of wonderful open-source projects, including:
- ash: thin and simple, should be your go-to rust binding for Vulkan!
- egui: lovely ImGUI written in pure rust.
- puffin: easy to use profile for Rust (it also comes with a integration with
egui
👏) - rspirv-reflect: minimalism SPIR-V reflection libray.
- MinimalAtmosphere: single-file atmospheric scattering implementation from Felix Westin.
And special thanks to @h3r2tic for his brilliant 💡kajiya, which inspired this entire journey into Rust and Vulkan rendering.