ASH Renderer
A production-read Vulkan renderer built with ASH and VMA. Designed for high-performance games and graphics applications, featuring ECS-independence and deep GPU optimization.
✨ Features (v0.2.0)
Check out what's new!
- 🎨 Bindless Texturing: Fully dynamic texture access using
descriptor_indexing. Supports thousands of textures with zero binding overhead. - 🖥️ Headless Support: Run heavy rendering workloads or benchmarks on CI without a window (virtual swapchain).
- 🌑 Advanced Shadows: Cascaded Shadow Maps (CSM) with PCF filtering and light culling.
Core Capabilities
- PBR Materials: Metallic/Roughness workflow with texture mapping.
- Post-Processing: Integrated Bloom, Tonemapping (ACES), and TAA.
- GPU Profiling: Built-in Diagnostics Overlay and timestamp queries.
- Hot-Reloading: Detects shader changes at runtime (experimental).
- Cross-Platform: Runs on Windows (Win32), Linux (X11/Wayland), and macOS (Metal) via a unified
SurfaceProvider.
🚀 Quick Start
Add to your Cargo.toml:
[]
= "0.2.0"
= "0.30"
= "0.30"
Initialization
use ;
use EventLoop;
🔌 Headless Benchmarking
Run graphics benchmarks in purely headless mode (no window required):
use ;
// Initialize without winit/window
let provider = new;
let mut renderer = new?;
// Loop as fast as GPU allows (no VSync)
for _ in 0..1000
🛠️ Performance
| Metric | Target | Achieved (v0.2.0) |
|---|---|---|
| Draw Calls (Bindless) | 10k+ | ✅ |
| Headless FPS | Unlocked | ✅ |
| Texture Switches | Zero Cost | ✅ |
📦 Feature Flags
| Feature | Description | Default |
|---|---|---|
validation |
Enables Vulkan Validation Layers | ✅ |
gltf_loading |
Support for loading .gltf/.glb models | ✅ |
profiling |
Enables GPU timestamp queries | ❌ |
📜 License
Licensed under Apache-2.0.