A wrapper around the Vulkan graphics API.
Switch branches/tags
Clone or download
Latest commit 3906d14 Feb 23, 2018



A work-in-progress framework and abstraction layer around the Vulkan graphics API. Currently being developed with version

plume logo


First, make sure that you have the latest version of the Vulkan SDK installed on your system and that the VULKAN_SDK environment variable is set. The SDK can be installed from LunarG's website.

Plume uses several submodules:

  • shaderc for runtime shader compilation (from GLSL to SPIR-V)
  • glm for mathematics
  • spirv-cross for shader reflection
  • stb for image loading
  • glfw for cross-platform windowing

After cloning the main repository, run checkout_and_build_deps.sh which will initialize the aforementioned submodules and setup a few other directories that will be used during the build process. Next, run CMake:

mkdir build
cd build
cmake ..

This will build shaderc, glfw, spirv-cross, and plume and create the executable plume_app in the build directory.

For the time being, you must also run a script to compile all shaders in the assets folder into SPIR-V:

cd assets/shaders
python compile_shaders.py .

This script is a slightly modified version of the same Python script that can be found in Sascha Willems' excellent Vulkan examples repository.

More information on working with submodules can be found here.


Plume's syntax, structure, and design patterns were greatly influenced by several major open source projects:

See the Plume C++ style guide for more information.


Many parts of Vulkan have not been implemented in Plume. As such, this project should be considered experimental and breaking changes will happen often.