liblava icon indicating copy to clipboard operation
liblava copied to clipboard

Modern and easy-to-use library for Vulkan



A modern and easy-to-use library for the Vulkan® API

version License CodeFactor   Discord Donate Twitter Follow


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

light spawn
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
spawn light
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
lamp lamp
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
shapes shapes
generating primitives

Switch between basic shapes and use the camera to fly around. A great start for your interactive applications.code
generics generics
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
triangle triangle
unique classic mesh

Where graphics programming always begins. A small example that illustrates how little it actually takes to render a triangle.code
demo lava demo
free download on ➜ itch.io

The collection includes all demos to play around. You can easily switch between them.code

Projects

rt cubes
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

engine app   block frame asset   resource base file   util core


lava engine

engine producer property

require app

lava app

app camera forward_shading

benchmark config imgui

require block + frame + asset


lava block

attachment block descriptor render_pass subpass

compute_pipeline render_pipeline pipeline pipeline_layout

require base

lava frame

argh driver frame gamepad input

render_target renderer swapchain window

require resource

lava asset

image_loader load_mesh load_texture write_image

require resource + file


lava resource

buffer mesh primitive

format image texture

require base

lava base

base instance profile memory

platform device physical_device queue

require util

lava file

file file_system file_utils json_file json

require util


lava util

log misc random telegram thread

require core

lava core

data hex id math time types version


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:

  1. Fork the official repository
  2. Apply your changes to your fork
  3. Submit a pull request describing the changes you have made

Support


Help maintenance and development Every star and follow motivates
paypal GitHub Stars   Twitter URL

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