Skip to content
Snippets Groups Projects
Commit 3789b526 authored by Lava Block's avatar Lava Block
Browse files

docs and readme

parent a34ddcdd
No related branches found
No related tags found
No related merge requests found
<a href="https://lava-block.com"><img align="left" src="https://github.com/liblava.png" width="100"></a>
<a href="https://lava-block.com"><img align="left" src="https://github.com/liblava.png" width="100" style="margin:0px 20px 0px 0px"></a>
# liblava docs [![Version](https://img.shields.io/badge/Version-0.5.4-blue)](https://git.io/liblava)
# liblava docs &nbsp; [![Version](https://img.shields.io/badge/Version-0.5.4-blue)](https://git.io/liblava)
[Features](#features)**[Tutorial](#tutorial)**[Modules](#modules)**[Guide](#guide)**[Tests](#tests)**[Build](#build)**[Install](#install)
[Features](#features) &nbsp; **[Tutorial](#tutorial)** &nbsp; [Modules](#modules) &nbsp; **[Guide](#guide)** &nbsp; [Tests](#tests) &nbsp; **[Build](#build)** &nbsp; [Install](#install)
<br />
## Features
*WIP*
<br />
## Tutorial
<a href="https://www.khronos.org/vulkan/" target="_blank"><img align="right" hspace="20" src="res/Vulkan_170px_Dec16.png" width="400"></a>
<a href="https://www.khronos.org/vulkan/" target="_blank"><img align="right" hspace="20" src="res/Vulkan_170px_Dec16.png" width="300"></a>
Let's write **Hello World** in Vulkan...
<br />
**"a simple app that renders a colored window"**
All we need is a `window`, `device` and `renderer`.
⇒ All we need is a `window`, `device` and `renderer`
<br />
**Vulkan** is a low-level, verbose graphics API and such a program can take several hundred lines of code
**Vulkan** is a low-level, verbose graphics API and such a program can take several hundred lines of code.
<br />
The good news is that **liblava** will help you...
The good news is that **liblava** will help you!
<br />
```c++
#include <liblava/lava.hpp>
using namespace lava;
```
<br />
⇓ Here are a few examples to get to know `lava`
Here are a few examples to get to know `lava`
<br />
#### 1. frame init
......@@ -41,7 +56,9 @@ int main(int argc, char* argv[]) {
}
```
This is how to initialize `lava frame` with command line arguments.
This is how to initialize `lava frame` with command line arguments
<br />
#### 2. run loop
......@@ -67,7 +84,9 @@ frame.add_run([&]() {
return frame.run();
```
The last line performs a loop with the **run** we added before. If *count* reaches 3 that **loop** will exit.
The last line performs a loop with the **run** we added before - If *count* reaches 3 that **loop** will exit
<br />
#### 3. window input
......@@ -104,7 +123,11 @@ frame.add_run([&]() {
return frame.run();
```
Straightforward - with this knowledge in hand let's write **Hello World** now...
<br />
Straightforward ⇒ With this knowledge in hand let's write our **Hello World** now...
<br />
#### 4. clear color
......@@ -230,21 +253,33 @@ frame.add_run_end([&]() {
return frame.run();
```
##### Welcome on **Planet Vulkan**. That's a lot to display a colored window.
<br />
##### Welcome on **Planet Vulkan** - That's a lot to display a colored window!
<br />
Phew! Take a closer look at the `build_cmd_bufs` function:
* We create a **command pool** and **command buffers** for each frame of the render target
* And set each command buffer to clear the frame image with some random color
The *VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT* flag specifies the reusage of command buffers.
<br />
The *VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT* flag specifies the reusage of command buffers
`clean_cmd_bufs` frees all buffers and destroys the command pool - In case of swap chain restoration we simply recreate command buffers with a new random color - This happens for example on window resize
`clean_cmd_bufs` frees all buffers and destroys the command pool. In case of swap chain restoration we simply recreate command buffers with a new random color. This happens for example on window resize.
<br />
After all, this is a very static example. Vulkan supports a more *dynamic* and common usage by resetting a command pool before recording new commands.
After all, this is a very static example ⇒ Vulkan supports a more *dynamic* and common usage by resetting a command pool before recording new commands
<br />
Ok, it's time for... `lava block`
<br />
#### 5. color block
```c++
......@@ -281,11 +316,17 @@ block.add_command([&](VkCommandBuffer cmd_buf) {
});
```
##### Nice, this is much more simpler than before.
<br />
##### Nice, this is much more simpler than before!
<br />
We create a `lava block` and add just one **command** that clears the current frame image
We create a `lava block` and add one **command** that clears the current frame image.
<br />
All we need to do is to process the block in the run loop...
All we need to do now is to process the block in the run loop...
```c++
if (!block.process(*frame_index))
......@@ -294,7 +335,9 @@ if (!block.process(*frame_index))
return plotter.end_frame(block.get_buffers());
```
... and call the renderer with our recorded command buffers.
... and call the renderer with our recorded command buffers
<br />
Don't forget to clean it up:
......@@ -302,13 +345,17 @@ Don't forget to clean it up:
block.destroy();
```
<br />
##### New to Vulkan? Take a look at this [Vulkan Guide](https://github.com/KhronosGroup/Vulkan-Guide)
Check [Awesome Vulkan ecosystem](http://www.vinjn.com/awesome-vulkan/) for tutorials, samples and books.
Check [Awesome Vulkan ecosystem](http://www.vinjn.com/awesome-vulkan/) for tutorials, samples and books
<br />
#### 8. imgui demo
Out of blocks, `lava app` supports the awesome [Dear ImGui](https://github.com/ocornut/imgui) for **tooling** and **easy prototyping**.
Out of blocks `lava app` supports the awesome [Dear ImGui](https://github.com/ocornut/imgui) for **tooling** and **easy prototyping**:
```c++
int main(int argc, char* argv[]) {
......@@ -325,16 +372,22 @@ int main(int argc, char* argv[]) {
}
```
##### What's next? - Check <a href="https://git.io/liblava-demo">demonstration projects</a> and clone <a href="https://git.io/liblava-template">starter template</a>
<br />
##### What's next? ⇒ Check some <a href="https://git.io/liblava-demo">demos</a> and clone a <a href="https://git.io/liblava-template">starter template</a> to try it out!
<a href="https://github.com/liblava/liblava-demo/#readme"><img src="res/demo.png"></a>
<br />
## Modules
#### lava [app](https://github.com/liblava/liblava/tree/master/liblava/app)
[![app](https://img.shields.io/badge/lava-app-brightgreen.svg)](https://github.com/liblava/liblava/tree/master/liblava/app/app.hpp) [![camera](https://img.shields.io/badge/lava-camera-brightgreen.svg)](https://github.com/liblava/liblava/tree/master/liblava/app/camera.hpp) [![forward_shading](https://img.shields.io/badge/lava-forward_shading-brightgreen.svg)](https://github.com/liblava/liblava/tree/master/liblava/app/forward_shading.hpp) [![gui](https://img.shields.io/badge/lava-gui-brightgreen.svg)](https://github.com/liblava/liblava/tree/master/liblava/app/gui.hpp)
<br />
#### lava [block](https://github.com/liblava/liblava/tree/master/liblava/block)
[![attachment](https://img.shields.io/badge/lava-attachment-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block/attachment.hpp) [![block](https://img.shields.io/badge/lava-block-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block/block.hpp) [![descriptor](https://img.shields.io/badge/lava-descriptor-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block/descriptor.hpp) [![pipeline](https://img.shields.io/badge/lava-pipeline-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block/pipeline.hpp) [![render_pass](https://img.shields.io/badge/lava-render_pass-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block/render_pass.hpp) [![subpass](https://img.shields.io/badge/lava-subpass-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block/subpass.hpp)
......@@ -343,17 +396,21 @@ int main(int argc, char* argv[]) {
[![frame](https://img.shields.io/badge/lava-frame-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame/frame.hpp) [![input](https://img.shields.io/badge/lava-input-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame/input.hpp) [![render_target](https://img.shields.io/badge/lava-render_target-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame/render_target.hpp) [![renderer](https://img.shields.io/badge/lava-renderer-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame/renderer.hpp) [![swapchain](https://img.shields.io/badge/lava-swapchain-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame/swapchain.hpp) [![window](https://img.shields.io/badge/lava-window-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame/window.hpp)
<br />
#### lava [asset](https://github.com/liblava/liblava/tree/master/liblava/asset)
[![mesh_loader](https://img.shields.io/badge/lava-mesh_loader-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset/mesh_loader.hpp) [![scope_image](https://img.shields.io/badge/lava-scope_image-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset/scope_image.hpp) [![texture_loader](https://img.shields.io/badge/lava-texture_loader-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset/texture_loader.hpp)
[![mesh_loader](https://img.shields.io/badge/lava-mesh_loader-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset/mesh_loader.hpp) [![scope_image](https://img.shields.io/badge/lava-scope_image-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset/scope_image.hpp) [![texture_loader](https://img.shields.io/badge/lava-texture_loader-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset/texture_loader.hpp)
#### lava [resource](https://github.com/liblava/liblava/tree/master/liblava/resource)
[![buffer](https://img.shields.io/badge/lava-buffer-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/buffer.hpp) [![format](https://img.shields.io/badge/lava-format-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/format.hpp) [![image](https://img.shields.io/badge/lava-image-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/image.hpp) [![mesh](https://img.shields.io/badge/lava-mesh-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/mesh.hpp) [![texture](https://img.shields.io/badge/lava-texture-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/texture.hpp)
[![buffer](https://img.shields.io/badge/lava-buffer-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/buffer.hpp) [![format](https://img.shields.io/badge/lava-format-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/format.hpp) [![image](https://img.shields.io/badge/lava-image-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/image.hpp) [![mesh](https://img.shields.io/badge/lava-mesh-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/mesh.hpp) [![texture](https://img.shields.io/badge/lava-texture-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource/texture.hpp)
#### lava [base](https://github.com/liblava/liblava/tree/master/liblava/base)
[![base](https://img.shields.io/badge/lava-base-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/base.hpp) [![device](https://img.shields.io/badge/lava-device-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/device.hpp) [![instance](https://img.shields.io/badge/lava-instance-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/instance.hpp) [![memory](https://img.shields.io/badge/lava-memory-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/memory.hpp) [![physical_device](https://img.shields.io/badge/lava-physical_device-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/physical_device.hpp)
[![base](https://img.shields.io/badge/lava-base-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/base.hpp) [![device](https://img.shields.io/badge/lava-device-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/device.hpp) [![instance](https://img.shields.io/badge/lava-instance-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/instance.hpp) [![memory](https://img.shields.io/badge/lava-memory-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/memory.hpp) [![physical_device](https://img.shields.io/badge/lava-physical_device-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/base/physical_device.hpp)
<br />
#### lava [file](https://github.com/liblava/liblava/tree/master/liblava/file)
......@@ -367,13 +424,21 @@ int main(int argc, char* argv[]) {
[![data](https://img.shields.io/badge/lava-data-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core/data.hpp) [![id](https://img.shields.io/badge/lava-id-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core/id.hpp) [![math](https://img.shields.io/badge/lava-math-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core/math.hpp) [![time](https://img.shields.io/badge/lava-time-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core/time.hpp) [![types](https://img.shields.io/badge/lava-types-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core/types.hpp) [![version](https://img.shields.io/badge/lava-version-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core/version.hpp)
<br />
## Guide
*WIP*
<br />
## Tests
Run the **lava** executable to test the [Tutorial examples](tests/tests.cpp). Let it simply flow...
Run the **lava** executable to test the [Tutorial examples](tests/tests.cpp)
Let it simply flow...
<br />
##### List all tests:
......@@ -390,13 +455,19 @@ lava -t
7. gamepad
8. [imgui demo](#8-imgui-demo)
<br />
##### Run test 2 for example:
```bash
lava 2
```
The **driver** starts the last test with no command line arguments.
<br />
The **driver** starts the last test when you provide *no* command line arguments
<br />
## Build
......@@ -413,11 +484,15 @@ cmake ..
make
```
<br />
## Install
You can use **liblava** as a *git submodule* in your project. For example like the [starter template](https://git.io/liblava-template).
You can use **liblava** as a *git submodule* in your project ⇒ Like in the [starter template](https://git.io/liblava-template) and [demo](https://git.io/liblava-demo)
<br />
Alternatively, you can compile and install a specific version for multiple projects:
Alternatively - You can compile and install a specific version for multiple projects:
```bash
mkdir build
......@@ -427,9 +502,11 @@ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=../lava-install ..
cmake --build . --target install
```
<br />
#### Project setup
First, find the package in your *CMakeLists.txt*:
First find the package in your *CMakeLists.txt*
```cmake
find_package(lava 0.5.3 REQUIRED)
......@@ -440,7 +517,9 @@ add_executable(test main.cpp)
target_link_libraries(test lava::app)
```
And then build your project with install path *lava_DIR*:
<br />
And then build your project with install path ⇒ *lava_DIR*
```bash
mkdir build
......@@ -450,4 +529,6 @@ cmake -D lava_DIR=path/to/lava-install/lib/cmake/lava ..
cmake --build .
```
<br />
<a href="https://lava-block.com"><img src="https://github.com/liblava.png" width="50"></a>
<a href="https://lava-block.com"><img align="right" src="https://github.com/liblava.png" width="220"></a>
**[liblava](https://git.io/liblava) is a modern and easy-to-use library for the <a href="https://www.khronos.org/vulkan/" target="_blank">Vulkan</a>® API**
🌋 **[liblava](https://git.io/liblava) &nbsp; A modern and easy-to-use library for the <a href="https://www.khronos.org/vulkan/" target="_blank">Vulkan</a>® API**
**lava** lean framework that provides **essentials** for **low-level graphics**<br />specially well suited for **prototyping**, **tooling** and **education**
**lava** is a lean framework that provides **essentials** for **low-level graphics**<br />and is specially well suited for **prototyping**, **tooling** and **education**
<br />
**C++20** **Modular** **Windows** **Linux** **<a href="https://git.io/liblava-demo">demo</a>** <a href="https://git.io/liblava-template">template</a>
**C++20** &nbsp; **Modular** &nbsp; **Windows** &nbsp; **Linux** &nbsp; **<a href="https://git.io/liblava-demo">demo</a>** &nbsp; <a href="https://git.io/liblava-template">template</a>
[![Version](https://img.shields.io/badge/Version-0.5.4-blue)](https://git.io/liblava) [![License](https://img.shields.io/github/license/liblava/liblava)](LICENSE) [![CodeFactor](https://www.codefactor.io/repository/github/liblava/liblava/badge)](https://www.codefactor.io/repository/github/liblava/liblava) [![Discord](https://img.shields.io/discord/439508141722435595)](https://discord.lava-block.com) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/liblava) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Follow)](https://twitter.com/liblava)
[![Version](https://img.shields.io/badge/Version-0.5.4-blue)](https://git.io/liblava) [![License](https://img.shields.io/github/license/liblava/liblava)](LICENSE) [![CodeFactor](https://www.codefactor.io/repository/github/liblava/liblava/badge)](https://www.codefactor.io/repository/github/liblava/liblava) &nbsp; [![Discord](https://img.shields.io/discord/439508141722435595)](https://discord.lava-block.com) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/liblava) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Follow)](https://twitter.com/liblava)
<br />
......@@ -18,7 +18,7 @@
* **[run loop](DOCS.md/#run-loop)** **abstraction** for **[window](DOCS.md/#window)** and **[input](DOCS.md/#input) handling**
* **plain** **[renderer](DOCS.md/#renderer)** and **[command buffer model](DOCS.md/#command-buffer-model)**
* **[texture](DOCS.md/#texture)** and **[mesh](DOCS.md/#mesh)** **loading** from **virtual [file system](DOCS.md/#file-system)**
* **[camera](DOCS.md/#camera)**, **[gui](DOCS.md/#gui)**, **[logging](DOCS.md/#logging)**, **test driver** and much more...
* **[camera](DOCS.md/#camera)** + **[gui](DOCS.md/#gui)** + **[logging](DOCS.md/#logging)** + **test driver** and much more
<br />
......@@ -26,17 +26,17 @@
### Docs
**[Tutorial](DOCS.md/#tutorial)** **[Guide](DOCS.md/#guide)** [Tests](DOCS.md/#tests) [Build](DOCS.md/#build) [Install](DOCS.md/#install)
**[Tutorial](DOCS.md/#tutorial)** &nbsp; **[Guide](DOCS.md/#guide)** &nbsp; [Tests](DOCS.md/#tests) &nbsp; [Build](DOCS.md/#build) &nbsp; [Install](DOCS.md/#install)
<br />
#### [Modules](DOCS.md/#modules)
### [Modules](DOCS.md/#modules)
[![core](https://img.shields.io/badge/lava-core-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core) [![util](https://img.shields.io/badge/lava-util-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/util) [![file](https://img.shields.io/badge/lava-file-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/file) [![base](https://img.shields.io/badge/lava-base-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/base) [![resource](https://img.shields.io/badge/lava-resource-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource) [![asset](https://img.shields.io/badge/lava-asset-yellow.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset) [![frame](https://img.shields.io/badge/lava-frame-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame) [![block](https://img.shields.io/badge/lava-block-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block) [![app](https://img.shields.io/badge/lava-app-brightgreen.svg)](https://github.com/liblava/liblava/tree/master/liblava/app) [![engine](https://img.shields.io/badge/lava-engine-brightgreen.svg)](https://git.io/liblava-engine)
[![core](https://img.shields.io/badge/lava-core-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/core) [![util](https://img.shields.io/badge/lava-util-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/util) [![file](https://img.shields.io/badge/lava-file-blue.svg)](https://github.com/liblava/liblava/tree/master/liblava/file) &nbsp; [![base](https://img.shields.io/badge/lava-base-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/base) [![resource](https://img.shields.io/badge/lava-resource-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/resource) [![asset](https://img.shields.io/badge/lava-asset-orange.svg)](https://github.com/liblava/liblava/tree/master/liblava/asset) &nbsp; [![frame](https://img.shields.io/badge/lava-frame-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/frame) [![block](https://img.shields.io/badge/lava-block-red.svg)](https://github.com/liblava/liblava/tree/master/liblava/block) &nbsp; [![app](https://img.shields.io/badge/lava-app-brightgreen.svg)](https://github.com/liblava/liblava/tree/master/liblava/app) [![engine](https://img.shields.io/badge/lava-engine-brightgreen.svg)](https://git.io/liblava-engine)
<br />
##### Download latest **<a href="https://github.com/liblava/liblava-demo/releases">demo</a>** (Feb. 20, 2020)
##### Download latest **<a href="https://github.com/liblava/liblava-demo/releases">demo</a>** (Feb. 20, 2020)
<a href="https://github.com/liblava/liblava-demo/#readme"><img src="res/demo.png"></a>
......@@ -44,38 +44,46 @@
[![Build status](https://ci.appveyor.com/api/projects/status/gxvjpo73qf637hy3?svg=true)](https://ci.appveyor.com/project/TheLavaBlock/liblava) [![Build Status](https://travis-ci.com/liblava/liblava.svg?branch=master)](https://travis-ci.com/liblava/liblava)
<br />
## Requirements
* **C++20** compatible compiler
* CMake **3.15+**
* [Vulkan SDK](https://vulkan.lunarg.com)
<br />
## Third-Party
* [argh](https://github.com/adishavit/argh) 3-clause BSD
* [bitmap](https://github.com/ArashPartow/bitmap) MIT
* [glfw](https://github.com/glfw/glfw) zlib
* [gli](https://github.com/g-truc/gli) MIT
* [glm](https://github.com/g-truc/glm) MIT
* [imgui](https://github.com/ocornut/imgui) MIT
* [json](https://github.com/nlohmann/json) MIT
* [physfs](https://github.com/Didstopia/physfs) zlib
* [selene](https://github.com/kmhofmann/selene) MIT
* [spdlog](https://github.com/gabime/spdlog) MIT
* [stb](https://github.com/nothings/stb) MIT
* [tinyobjloader](https://github.com/syoyo/tinyobjloader) MIT
* [volk](https://github.com/zeux/volk) MIT
* [Vulkan-Headers](https://github.com/KhronosGroup/Vulkan-Headers) Apache 2.0
* [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) MIT
* [argh](https://github.com/adishavit/argh) &nbsp; 3-clause BSD
* [bitmap](https://github.com/ArashPartow/bitmap) &nbsp; MIT
* [glfw](https://github.com/glfw/glfw) &nbsp; zlib
* [gli](https://github.com/g-truc/gli) &nbsp; MIT
* [glm](https://github.com/g-truc/glm) &nbsp; MIT
* [imgui](https://github.com/ocornut/imgui) &nbsp; MIT
* [json](https://github.com/nlohmann/json) &nbsp; MIT
* [physfs](https://github.com/Didstopia/physfs) &nbsp; zlib
* [selene](https://github.com/kmhofmann/selene) &nbsp; MIT
* [spdlog](https://github.com/gabime/spdlog) &nbsp; MIT
* [stb](https://github.com/nothings/stb) &nbsp; MIT
* [tinyobjloader](https://github.com/syoyo/tinyobjloader) &nbsp; MIT
* [volk](https://github.com/zeux/volk) &nbsp; MIT
* [Vulkan-Headers](https://github.com/KhronosGroup/Vulkan-Headers) &nbsp; Apache 2.0
* [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) &nbsp; MIT
<br />
## Collaborate
You can use the [issue tracker](https://github.com/liblava/liblava/issues) to report any bug or compatibility issue.
You can use the [issue tracker](https://github.com/liblava/liblava/issues) to report any bug or compatibility issue
<br />
:heart: Thanks to all **[contributors](https://github.com/liblava/liblava/graphs/contributors)** making **liblava** flow...
<br />
### Support
If you want to contribute, we suggest the following:
......@@ -88,17 +96,21 @@ If you want to contribute, we suggest the following:
## License
<a href="https://opensource.org" target="_blank"><img align="right" src="http://opensource.org/trademarks/opensource/OSI-Approved-License-100x137.png"></a>
<a href="https://opensource.org" target="_blank"><img align="right" width="80" src="http://opensource.org/trademarks/opensource/OSI-Approved-License-100x137.png" style="margin:0px 0px 0px 20px"></a>
**liblava** is licensed under [MIT License](LICENSE.md) which allows you to use the software for any purpose you might like, including commercial and for-profit use!
**liblava** is licensed under [MIT License](LICENSE.md) which allows you to use the software for any purpose you might like, including commercial and for-profit use.
<br />
However, this library includes several third-party **Open Source** libraries, which are licensed under their own respective licenses. They all allow static linking with closed source software.
However, this library includes several third-party **Open Source** libraries, which are licensed under their own respective 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.**
**All copies of liblava must include a copy of the MIT License terms and the copyright notice**
<br />
##### 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>
<br />
<a href="https://lava-block.com"><img src="https://github.com/liblava.png" width="50"></a>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment