libvultra
libvultra is the core library of Vultra, which can be used for rapidly creating graphics or game prototypes without the VultraEditor. (WIP)
(This project is under early development and WIP.)
Features
- Modern Vulkan using Vulkan-Hpp, Vulkan-Memory-Allocator-Hpp and more
- FrameGraph (RenderGraph) based rendering system
- OpenXR support (now focusing on VR only, not AR)
- Modern SDL using SDL3
- ImGui docking + multiview
Showcase

[Example: Sponza with Meshlet Debug View]
![[Example: Sponza]](https://raw.githubusercontent.com/zzxzzk115/libvultra/refs/heads/master/media/images/example-sponza.png)
Build Instructions
Prerequisites:
- Git
- XMake
- Vulkan SDK
- Visual Studio with MSVC if Windows
- GCC or Clang if Linux/Unix
- XCode with GCC or Apple Clang if macOS
Step-by-Step:
-
Install XMake by following this.
-
Clone the project:
git clone https://github.com/zzxzzk115/libvultra.git -
Build the project:
cd libvultra xmake -vD -
Run the programs:
xmake runor run a specific program:
xmake run example-window xmake run example-rhi-triangle xmake run example-imgui xmake run example-framegraph-triangle xmake run example-openxr-triangle xmake run example-openxr-sponza xmake run example-raytracing-triangle xmake run example-raytracing-cornell-box xmake run example-rayquery xmake run example-meshshading-triangle xmake run example-gltf-viewer xmake run example-sponzaTips: For OpenXR programs, you may need to set the XR_RUNTIME_JSON environment variable. For debugging OpenXR programs without headsets, you may need Meta XR Simulator on Windows and macOS. On Linux, you can use Monado as the simulator.
TODO List
- Wayland support
- More powerful texture loader that supports KTX, KTX2, DDS and more
- KTX
- KTX2
- DDS
- EXR
- ECS-based scene management with EnTT
- Raytracing Pipeline
- Mesh Shading Pipeline
- Resource Pipeline
- Lua or C# Scripting System
- (Maybe?) AR support
Create your own graphics or game project
You can simply create a project by using this template.
Have fun!
License
This project is under the MIT license.