Fast Fourier Transform Bloom
Open Source Rendering Framework
Nabla
A Vulkan-only, thread-agnostic C++ and HLSL framework for demanding rendering middleware.
Nabla showcase

Featured render
Raytracing pipeline

Shader Compiler
Fluid Simulation

Materials
Showcase
Nabla in motion
GPU-Accelerated Vectorized Linework
SDF Function Manipulation

ImGui Integration
2D Constructive Solid Geometry

Path-Traced Scene

Path-Traced Reflections

Production Integration

Interior Rendering
Vulkan Core
SPIR-V and Vulkan as first class citizens
Single Source
HLSL subset compiling as both C++ Host and SPIR-V Device code
GPU Lifetime
GPU Object life cycle tracking (descriptor sets and commandbuffers)
Async Assets
Cancellable Future based Async I/O
Framework
Vulkan-first and built to integrate
Nabla (previously IrrlichtBaW) started as a fork and renovation of the Irrlicht engine, it has since become the Ship of Theseus. Nabla is Vulkan-only thread agnostic, free of singletons and was redesigned with interoperability and headless rendering, allowing you to use it un-intrusively within other engines and share resources from them.
Most importantly it bridges C++ and HLSL allowing Single Source Programming and compiling most HLSL both for the CPU Host and GPU Device, giving you a CUDA-like experience with Vulkan. Furthermore it provides header only libraries for HLSL such as: unit tested BxDFs, FFTs, parts of C++ STL and much more!
It's the perfect choice for building Vulkan middlewares.
Main Features
A complete low-level toolkit
Core Profile
- Curated List of Vulkan Features and Extensions the Nabla Core Profile
- Easy filtering of Vulkan Physical Devices by capabilities
- SPIR-V and Vulkan as first class citizens
- First class integration of Renderdoc
- Embraces Buffer Device Address and Descriptor Indexing to the full
- Minimally Invasive (vulkan handle acquisition, multiple windows, content playing second fiddle)
Synchronization & Lifetime
- Extensive use of Timeline Semaphores (event handlers, CPU callbacks on GPU conditions)
- GPU Object life cycle tracking (descriptor sets and commandbuffers)
- Designed for Interoperation (memory export, import and Coming Soon: CUDA Interop)
HLSL & C++ Single Source
- Reusability: HLSL2021 Standard Template Library
- Testability: HLSL subset compiling as both C++ Host and SPIR-V Device code
- Future Proof: C++20 Concepts in HLSL for safe and documented Static Polymorphism
- Insane: Boost PreProcessor and Template Metaprogramming in HLSL!
- Unit tested BxDFs in a Statically Polymorhic framework
- SPIR-V Introspection and Layout creation
Assets & I/O
- Cancellable Future based Async I/O
- Virtual File System (archive mounting, our alternative to #embed, everything is referenced by absolute path)
- Asset Managment: Directed Acyclic Graphs
- Asset Converter: Merkle Trees de-duplicating GPU Object Instances
Extensions
- Extensions: ImGUI, FFT, Workgroup Prefix Sum, Blur
- Counting Sort In Progress: Autoexposure, Tonemap, GPU MPMC Queue, OptiX Interop, Global Scan
Roadmap
- In Progress: GPU ECS (Property Pools)
- Coming Soon: Scene Loaders, GPU Driven Scene Graph, Material Compiler v2 for efficient scheduling of BxDF graph evaluation