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
#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();
}![]() |
free download on ➜ itch.io The collection includes all stages to play around. - You can easily switch between them. |
![]() |
deferred shading + offscreen rendering Small demo that showcases how to render to an offscreen framebuffer and sample from it. - It is a challenge in itself and also a compact solution. |
![]() |
uniform buffer + camera This loads a very large mesh from file and simply textures it. - Use your gamepad to control the camera if there is one around. |
![]() |
push constants to shader Classic lamp to relax and where colors can be easily switched. - Unfortunately it also consumes power - so be aware! |
![]() |
generating primitives Switch between basic shapes and use the camera to fly around. - A great start for your next interactive application. |
![]() |
float, double & int meshes This demo shows how to check GPU features and render mesh data with custom vertex layout. - There is a chapter about it in the Guide. |
![]() |
unique classic mesh Where graphics programming always begins. - An example that illustrates how little it actually takes to render a triangle. |
|
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 | |
➜ depends on app
➜ depends on frame + block + asset
➜ depends on resource
➜ depends on base
➜ depends on resource + file
➜ depends on base
➜ depends on util
➜ depends on core
➜ depends on core
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:
Need help? Please feel free to ask us on ➜ Discord
| Help maintenance and development | Every star and follow motivates |
|---|---|
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
