A modern and easy-to-use library for the Vulkan® API
lava provides essentials for low-level graphics - suited for prototyping, tooling, profiling and education.
This lean framework is written in neat C++23 and it strives for a modular rolling release as far as possible. We don't want to promise too much... but lava runs really smoothly on Windows and Linux.
➜ Download • Documentation (Tutorial + Guide) • Projects • Modules • Collaborate
In a nutshell
- liblava is written in modern C++ with latest Vulkan support
- Provides run loop abstraction for window and input handling
- Plain renderer and command buffer model
- Batteries included ➜ runtime shader compilation
- Texture and mesh loading from virtual file system
- Camera, imgui, logger and much more...
Take a look
#include "liblava/lava.hpp"
#include "imgui.h"
int main(int argc, char* argv[]) {
lava::engine app("imgui demo", { argc, argv });
if (!app.setup())
return lava::error::not_ready;
app.imgui.layers.add("demo window", []() {
ImGui::ShowDemoWindow();
});
return app.run();
}
Demos
free download on ➜ itch.io The collection includes all stages to play around. - You can easily switch between them. |
|
Stages
Projects
raytraced reflecting cubes Vulkan raytracing with liblava Support for the Vulkan KHR ray tracing extensions with idiomatic wrappers. ➜ pezcode |
|
Do you have a project? Submit it with a pull request | |
Modules
lava engine
➜ depends on app
lava app
➜ depends on frame + block + asset
lava frame
➜ depends on resource
lava block
➜ depends on base
lava asset
lava resource
➜ depends on base
lava base
➜ depends on util
lava file
➜ depends on core
lava util
➜ depends on core
lava core
Collaborate
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
Support
Need help? Please feel free to ask us on ➜ Discord
Help maintenance and development | Every star and follow motivates |
---|---|
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.
Vulkan and the Vulkan logo are trademarks of the Khronos Group Inc.
Copyright (c) 2018-present - Lava Block OÜ and contributors