SkillAgentSearch skills...

Liblava

Modern and easy-to-use library for Vulkan

Install / Use

/learn @liblava/Liblava

README

<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 />

version License CodeFactor   Discord Donate Twitter Follow

<br />

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.

<br />

➜   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...
<br />

engine app frame   block asset resource base   file util core

<br />

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

||| |:-|:-| | demo | lava demo<br />free download on ➜ itch.io<br /><br /> The collection includes all stages to play around. - You can easily switch between them. | |||

Stages

||| |:-|:-| | light | spawn<br />deferred shading + offscreen rendering<br /><br />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. | | compute | spawn<br />compute pipeline<br /><br />Small demo showcasing how to use a compute pipeline to generate and render a Mandelbrot fractal on the GPU. - A compact example for experimenting with compute-based rendering. | | spawn | light<br />uniform buffer + camera<br /><br />This loads a very large mesh from file and simply textures it. - Use your gamepad to control the camera if there is one around. | | lamp | lamp<br />push constants to shader<br /><br />Classic lamp to relax and where colors can be easily switched. - Unfortunately it also consumes power - so be aware! | | shapes | shapes<br />generating primitives<br /><br />Switch between basic shapes and use the camera to fly around. - A great start for your next interactive application. | | generics | generics<br />float, double & int meshes<br /><br />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. | | triangle | triangle<br />unique classic mesh<br /><br />Where graphics programming always begins. - An example that illustrates how little it actually takes to render a triangle. | |||

<br />

Projects

||| |:-|:-| | <img src="https://raw.githubusercontent.com/pezcode/lava-rt/main/demo/res/cubes/screenshot.png"> | rt cubes<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 | |||

<br />

Modules

lava engine

engine producer props

  ➜   depends on app

lava app

app camera forward_shading

benchmark config imgui

  ➜   depends on frame + block + asset

lava frame

argh driver frame gamepad input

render_target renderer swapchain window

  ➜   depends on resource

<br />

lava block

attachment block descriptor render_pass subpass

compute_pipeline render_pipeline pipeline pipeline_layout

  ➜   depends on base

lava asset

load_image load_mesh load_texture write_image

  ➜   depends on resource + file

lava resource

[![buffer](https://img.shields.io/badge/lava-buffer

Related Skills

View on GitHub
GitHub Stars875
CategoryDevelopment
Updated4d ago
Forks57

Languages

C++

Security Score

100/100

Audited on Mar 30, 2026

No findings