toy C++ Vulkan library
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status

Lava is just an experimental playground, I do not recommend using it in a production setting.

Lava is a toy C++ library composed of classes that make it easy to create and manage Vulkan objects. Each Lava class is defined by a single header with no dependencies on anything other than vulkan.h and the STL.

For more information, see the documentation.


Lava does not include a materials system, a scene graph, an asset loader, or any platform-specific functionality like windowing and events.

Lava is implemented with a subset of C++14 that forbids RTTI, exceptions, and the use of <iostream>. The public API uses a very narrow subset of C++ whereby classes contain nothing but methods.

The core library has no dependencies on any third-party libraries other than the single-file vk_mem_alloc.h library and spdlog, which are included in the repo for convenience.

Supported platforms

Lava supports macOS via MoltenVK, as well as Linux and Android. It should be easy to extend to other platforms in the future.