Vulkan & C++17 based Scene Graph Project


VulkanSceneGraph (VSG), is a modern, cross platform, high performance scene graph library built upon Vulkan graphics/compute API. The software is written in C++17, and follows the CppCoreGuidlines and FOSS Best Practices. The source code is published under the MIT License.

The project aims to bring the performance of Vulkan to the wider developer community by providing a modern, high quality software library that is easy to use and focused on making the development of high performance graphics and compute applications a productive and fun experience. Sharing the same lead author as the OpenSceneGraph, all the lessons about software quality, performance and the needs of application developers are applied to VulkanSceneGraph to provide a distillation of what a next gen scene graph needs to be.

This repository contains basic documentation, C++ headers and source and CMake build scripts to build the prototype libvsg library. Additional support libraries and examples are provided in separate repositories, links to these are provided below. The software currently builds under Linux, Windows, Android and macOS (using MoltenVk).


The VulkanSceneGraph project is comprised of the main VulkanSceneGraph library (provided by this repo) and a collection of optional libraries, each in their own dedicated repositories hosted alongside each other on, that provide additional features and example programs and templates for your own VulkanSceneGraph projects.

Features provided by the core VulkanSceneGraph library are:

Features provided by companion projects:

Public discussion list/forum

The VulkanSceneGraph Discussion Group vsg-users is the place for project news, discussions of latest developments and any questions you have on how to use the software in your applications. The discussion group can be read by anyone, to post to the group you’ll need register.

Professional Support

Project lead, Robert Osfield, provides OpenSceneGraph and VulkanSceneGraph related services, the associated income supports open source development work and public support on both projects. Services provided:

Quick Guide to building the VSG


The above dependency versions are known to work so they’ve been set as the current minimum, it may be possible to build against older versions. If you find success with older versions let us know and we can update the version info.

Download VulkanSDK from LunarG, unpack into local directory and set VUKAN_SDK environment variable to the include/lib directory within it. For Linux it would typically be along the lines of:


mkdir VulkanSDK
wget${VULKAN_SDK_VERSION}/linux/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.gz -O VulkanSDK/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.gz
tar zxf VulkanSDK/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.gz -C VulkanSDK/

Once you’ve downloaded and unpacked the VulkanSDK you’ll want to put VULKAN_SDK into your user environment variable setup so that CMake’s find_package(Vulkan) can find the VulkanSDK’s location.

Command line build instructions:

To build and install the static libvsg library (.a/.lib) in source:

git clone
cd VulkanSceneGraph
cmake .
make -j 8
sudo make install

Full details on how to build of the VSG (Unix/Windows/Android/macOS) can be found in the file.