🌋 liblava A modern and easy-to-use library for the Vulkan® API
lava is a lean framework that provides essentials for low-level graphics
and is specially well suited for prototyping, tooling and education
C++20 + Modular / Windows + Linux / Demos + Projects
Features
- 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
- GUI + camera + logging + utils and much more
demo (December 20, 2020)
➜ Download latestDocs
Tutorial Guide Reference Tests Third-Party Install
Modules
Demos
lava spawn ➜ uniform buffer camera
lava lamp ➜ push constants to shader
lava triangle ➜ classic colored mesh
Projects
raytracing cubes ➜ raytraced reflecting cubes (pezcode/lava-rt)
Requirements
- C++20 compatible compiler
- CMake 3.20+
- Vulkan SDK
Build
git clone https://github.com/liblava/liblava.git
cd liblava
git submodule update --init --recursive
mkdir build
cd build
cmake ..
make
Template
You can start coding with the template project. If you like you can rename it in CMakeLists
➜ Just put your code in the src folder. Everything you need is in main.cpp
Collaborate
Use the issue tracker to report any bug or compatibility issue
❤️ Thanks to all contributors making liblava flow...
Support
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
License
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