/liblava

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

Primary LanguageC++MIT LicenseMIT

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

lava is a lean framework that provides essentials for low-level graphics
and is specially well suited for prototyping, tooling and education


C++20   +   Modular   /   Windows   +   Linux   /   Demos   +   Projects

Version   License   CodeFactor   Donate   Discord   Twitter URL


Features

  • written in modern C++ with latest Vulkan support
  • run loop abstraction for window and input handling
  • plain renderer and command buffer model
  • texture and mesh loading from virtual file system
  • GUI + camera + logging + utils and much more

➜ Download latest demo (December 20, 2020)

Requirements   Build   Template


Docs

Tutorial   Guide   Reference   Tests   Third-Party   Install


Modules

core util file   base resource asset   frame block   app demo


Demos

lava light ➜ deferred shading / offscreen rendering

light


lava spawn ➜ uniform buffer camera

spawn


lava lamp ➜ push constants to shader

lamp


lava triangle ➜ classic colored mesh

triangle


Projects

raytracing cubes ➜ raytraced reflecting cubes (pezcode/lava-rt)

cubes


Requirements

  • C++20 compatible compiler
  • CMake 3.20+
  • Vulkan SDK

Build

Build status Build Status

git clone https://github.com/liblava/liblava.git
cd liblava

git submodule update --init --recursive

mkdir build
cd build

cmake ..
make

Template

You can start coding with the template project. If you like you can rename it in CMakeLists

➜ Just put your code in the src folder. Everything you need is in main.cpp


Collaborate

Use the issue tracker to report any bug or compatibility issue

❤️ Thanks to all contributors making liblava flow...


Support

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

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