liblava
liblava copied to clipboard
Modern and easy-to-use library for Vulkan
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++20 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 - Please feel free to check it out!
➜ 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
- Texture and mesh loading from virtual file system
- Plain renderer and command buffer model
- Batteries included ➜ runtime shader compilation
- Camera, imgui, logger and much more...
Demos
![]() |
deferred shading + offscreen rendering Small demo that showcases how to render to an offscreen framebuffer and sample from it. A challenge in itself and also a compact solution. ➜ code |
![]() |
uniform buffer + camera This loads a very large mesh object from file and simply textures it. Use a gamepad to control the camera if there is one around. ➜ code |
![]() |
push constants to shader Classic lamp to relax where the color can also be easily switched. Unfortunately it also consumes power - so be aware! ➜ code |
![]() |
generating primitives Switch between basic shapes and use the camera to fly around. A great start for your interactive applications. ➜ code |
![]() |
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 this in the Guide. ➜ code |
![]() |
unique classic mesh Where graphics programming always begins. A small example that illustrates how little it actually takes to render a triangle. ➜ code |
![]() |
free download on ➜ itch.io The collection includes all demos to play around. You can easily switch between them. ➜ code |
Projects
![]() |
raytraced reflecting cubes Vulkan raytracing with liblava Support for the Vulkan KHR ray tracing extensions with idiomatic wrappers. ➜ code |
| Do you have a project? Submit it with a pull request |
Modules
lava engine
require app
lava app
require block + frame + asset
lava block
require base
lava frame
require resource
lava asset
require resource + file
lava resource
require base
lava base
require util
lava file
require util
lava util
require core
lava core
Collaborate
Use the issue tracker to report any bug or compatibility issue.
:heart: 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
| 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








