Awesome
<br /> <a href="https://liblava.dev"> <img align="left" src="docs/assets/liblava_200px.png" width="110"> </a> <br /><a href="https://liblava.dev"><img src="docs/assets/liblava.svg"></a>
A modern and easy-to-use library for the Vulkan® API
<br /> <br />lava provides essentials for low-level graphics - suited for prototyping, tooling, profiling and education.
<br />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
<br />In a nutshell
<a href="https://vulkan.org/"> <img align="right" src="docs/assets/Vulkan_RGB_Dec16.svg" width="270"> </a>- 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();
}
<br />
Demos
<br />free download on ➜ itch.io<br /><br /> The collection includes all stages to play around. - You can easily switch between them. | |
Stages
Projects
<img src="https://raw.githubusercontent.com/pezcode/lava-rt/main/demo/res/cubes/screenshot.png"> | <br /> raytraced reflecting cubes<br /><br />Vulkan raytracing with liblava<br />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
<br />lava block
➜ depends on base
lava asset
lava resource
➜ depends on base
lava base
➜ depends on util
<br />lava file
➜ depends on core
lava util
➜ depends on core
lava core
<br />Collaborate
Use the issue tracker to report any bug or compatibility issue.
:heart: Thanks to all contributors making liblava flow...
<br /> <br />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
<br />Need help? Please feel free to ask us on ➜ Discord
<br />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.
<br />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 <a href="http://www.khronos.org" target="_blank">Khronos Group Inc.</a>
Copyright (c) 2018-present - <a href="https://lava-block.com">Lava Block OÜ</a> and contributors
<br /> <br /><a href="https://liblava.dev"><img src="docs/assets/liblava_200px.png" width="50"></a>