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 CppCoreGuidelines 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 libvsg library. Additional support libraries and examples are provided in separate repositories, links to these are provided below. The software currently builds under Linux (desktops variants through to Jetson & Raspberry Pi), Windows (VisualStudio, MinGW & Cygwin), Android, and macOS & iOS (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 is the place for project news, discussions of latest developments and any questions you have on how to use the VulkanSceneGraph, and associated projects, in your applications.

For the first part of this projects life we used vsg-users google group, this will be kept available as an archive of old discussions.

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.