Skip to content

zzxzzk115/libvultra

Repository files navigation

libvultra

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

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 --recursive https://github.com/zzxzzk115/libvultra.git
  • Build the project:

    cd libvultra
    git submodule update --init
    xmake -vD
  • Run the examples:

    xmake run # Run all examples
    xmake examples # A task to run all standard examples (without modern features such as ray-tracing and mesh shaders).

    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
    xmake run example-gaussian-splatting

    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
  • 3D Gaussian Splatting Rendering
    • .spz loader
    • .ply loader
    • CPU sorting
    • CPU culling
    • GPU sorting
    • GPU culling
  • 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.

About

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

Resources

License

Stars

Watchers

Forks

Contributors

Languages