Awesome
Plume
A work-in-progress framework and abstraction layer around the Vulkan graphics API. Currently being developed with version 1.0.65.0
.
Building
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 ..
make
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.
References
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.
Roadmap
Many parts of Vulkan have not been implemented in Plume. As such, this project should be considered experimental and breaking changes will happen often.