Code Monkey home page Code Monkey logo

liblava's Introduction



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


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.

❤️   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


liblava's People

Contributors

cons-cat avatar dunkyp avatar mall1 avatar norbertoburciaga avatar pezcode avatar thelavablock avatar underdoeg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.