VulkanSceneGraphPrototype (VSG) is a prototype for 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.
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 provided below. The software currently builds under Linux and Windows. We plan on providing support for Android by the end of 2018, and later add OSX and iOS support using MoltenVk.
The VulkanSceneGraphPrototype is the precursor to final VulkanSceneGraph/VkSceneGraph project, the prototype will be developed through to the end of 2018, then in 2019 we'll begin work on the final project that will be appropriate for use within user compute and graphics middle-ware and applications.
- Detailed build and install instructions
- Software development Road Map
- Design : Principles and Philosophy, High Level Decisions
- Community resources : Code of Conduct, Contributing guide
- Exploration Phase Materials : Areas of Interest, 3rd Party Resources and Exploration Phase Report
- Headers - the public interface : include/vsg/
- Source - the implementation : src/vsg/
- C++17 compliant compiler i.e.. g++ 7.3 or later, Clang 6.0 or later, Visual Studio S2017 or later.
- Vulkan 1.1 or later.
- CMake 3.5 or later.
- GLFW 3.3 or later. The plan is to implement native Windowing support so this dependency will later be removed.
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.
To build and install the static libvsg library (.a/.lib) in source:
git clone https://github.com/robertosfield/VulkanSceneGraphPrototype.git
cd VulkanSceneGraphPrototype
cmake .
make -j 8
make install
Full details on how to build of the VSG can be found in the INSTALL.md file.
It's still very early days for the project so we don't have many projects that use to the VSG to reference, for our own testing purposes we have two project which may serve as an illustration of how to compile against the VSG and how to use parts of it's API. These projects are:
- osg2vsg utility library that integrates OpenSceneGraph with the VSG to leverages data and image loaders.
- vsgExamples example programs that we are using to test out VSG functionality and illustrates usage.
Three examples within the vsgExamples project that may be of particular interest are ports of Vulkan tutorials to the VSG API. In each case the VSG version requires less than 1/5th the amount of code to achieve the same functionality.
- Vulkan Tutorial ported as vsgExamples/examples_osg2vsg/vsgdraw
- Version of vsgdraw using vkPushConstants vsgExamples.examples_osg2vsg/vsgpushconstants
- vulkan_minimal_compute tutorial ported to VSG vsgExamples/examples_osg2vsg/vsgcompute