libvultra

libvultra is the core library of Vultra, which can be used for rapidly creating graphics or game prototypes without the VultraEditor. (WIP)

zzxzzk115/libvultra - GitHub

CodeFactor

(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: GLTF Viewer

Example: GLTF Viewer

[Example: Sponza with Meshlet Debug View]

[Example: Sponza]

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 run
    

    or 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-sponza
    

    Tips: 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.