Open Source Rendering Framework

Nabla

A Vulkan-only, thread-agnostic C++ and HLSL framework for demanding rendering middleware.

Nabla showcase

Raytracing

Featured render

Raytracing pipeline

Shader Compiler

Shader Compiler

Fluid Simulation

Materials

Materials

Showcase

Nabla in motion

Fast Fourier Transform Bloom

GPU-Accelerated Vectorized Linework

SDF Function Manipulation

ImGui Integration

ImGui Integration

2D Constructive Solid Geometry

Path-Traced Scene

Path-Traced Scene

Path-Traced Reflections

Path-Traced Reflections

Production Integration

Production Integration

Interior Rendering

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

Vulkan-onlyThread-agnosticC++ / HLSL bridge

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