Devsh-Graphics-Programming/Nabla
Vulkan, OptiX and CUDA Interoperation Modular Rendering Library and Framework for PC/Linux/Android
What it solves
Nabla simplifies low-level GPU programming by providing a curated, stable profile of Vulkan extensions and features, reducing the need for developers to manually track hardware quirks and rapidly evolving API specifications. It bridges the gap between CPU and GPU development by allowing shared logic and unit testing across both environments.
How it works
Nabla treats SPIR-V and Vulkan as its reference standards, building a framework that manages GPU object lifecycles via reference counting and synchronizes CPU-GPU operations using Timeline Semaphores. It features a unique HLSL2021 Standard Template Library that allows a subset of HLSL to compile as both C++ and SPIR-V, enabling GPU logic to be tested on the CPU. The system also includes a virtual file system for asset management, asynchronous I/O using cancellable futures, and a GPU-optimized asset converter that uses Merkle Trees to eliminate duplicate objects.
Who it’s for
Graphics programmers and engine developers who need a high-performance, flexible, and thread-agnostic framework for custom rendering setups, physically based rendering (PBR), or porting legacy OpenGL and DirectX applications.
Highlights
- Unified HLSL/C++ Library: Enables single-source libraries for GPU logic that can be unit-tested on the CPU.
- Automated Lifecycle Tracking: Uses reference counting to ensure GPU objects are not destroyed while still in use by the queue.
- Curated Core Profile: Provides a pre-selected set of Vulkan extensions to avoid the complexity of manual hardware compatibility checks.
- Advanced Memory Access: Fully embraces Buffer Device Address (BDA) and Descriptor Indexing for dynamic resource binding.
- Asynchronous Infrastructure: Implements cancellable future-based I/O and a virtual file system for efficient asset loading.
Related
- Project
- Project
- Project
- Project
- Project