A modern and easy-to-use library for the Vulkan® API
lava is a lean framework that provides essentials for low-level graphics
Specially well suited for prototyping, tooling and education
➜ C++20 / Modular / Linux / Windows
Requirements Download Build Template
- written in modern C++ with latest Vulkan support
- run loop abstraction for window and input handling
- plain renderer and command buffer model
- texture and mesh loading from virtual file system
- camera / logger / imgui and much more
Tutorial Guide Reference Tests Third-Party Install
deferred shading / offscreen rendering
uniform buffer camera
push constants to shader
generating primitives
float, double, and int meshes
classic colored mesh
raytraced reflecting cubes ➜ pezcode/lava-rt
- C++20 compatible compiler
- CMake 3.22+
- Vulkan SDK
git clone https://github.com/liblava/liblava.git
cd liblava
git submodule update --init --recursive
mkdir build
cd build
cmake ..
make
You can start coding with the template project
➜ Just put your code in the src folder. Everything you need is in main.cpp
If you like you can rename it by setting the LIBLAVA_TEMPLATE_NAME
variable in CMake:
cmake -DLIBLAVA_TEMPLATE_NAME="My-Project" ..
Use the issue tracker to report any bug or compatibility issue
❤️ Thanks to all contributors making liblava flow...
If you want to contribute, we suggest the following:
- Fork the official repository
- Apply your changes to your fork
- Submit a pull request describing the changes you have made
liblava is licensed under MIT License which allows you to use the software
for any purpose you might like, including commercial and for-profit use!
However, this library includes several Third-Party libraries, which are licensed under their own respective Open Source licenses ➜ They all allow static linking with closed source software
All copies of liblava must include a copy of the MIT License terms and the copyright notice