All Projects → Noxagonal → Vulkan2drenderer

Noxagonal / Vulkan2drenderer

Licence: mit
Easy to use 2D rendering engine using Vulkan API as backend.

Projects that are alternatives of or similar to Vulkan2drenderer

Gears Vk
Powerful low-level C++20 rendering framework for Vulkan 1.2, including Real-Time Ray Tracing (RTX) support, built atop Auto-Vk.
Stars: ✭ 71 (+18.33%)
Mutual labels:  engine, vulkan, rendering
Vrt
🔅 Ray tracing library for Vulkan API (indev)
Stars: ✭ 111 (+85%)
Mutual labels:  vulkan, rendering, library
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (+251.67%)
Mutual labels:  engine, vulkan, rendering
Nebula Trifid
Nebula Trifid
Stars: ✭ 62 (+3.33%)
Mutual labels:  engine, vulkan, rendering
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+16986.67%)
Mutual labels:  engine, vulkan, rendering
Innocenceengine
Cross-platform modern game engine.
Stars: ✭ 149 (+148.33%)
Mutual labels:  engine, vulkan, rendering
CLUSEK-RT
Vulkan based C++ ray-tracing game engine.
Stars: ✭ 24 (-60%)
Mutual labels:  engine, rendering, vulkan
Island
🌋🐎 Project Island is an experimental, hot-reloading Vulkan renderer/proto-engine for Linux, written in C/C++.
Stars: ✭ 441 (+635%)
Mutual labels:  engine, vulkan
Spritejs
A cross platform high-performance graphics system.
Stars: ✭ 4,712 (+7753.33%)
Mutual labels:  rendering, 2d
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+723.33%)
Mutual labels:  engine, rendering
Spartanengine
Game engine with an emphasis on architectual quality and performance
Stars: ✭ 869 (+1348.33%)
Mutual labels:  engine, vulkan
Lambdahack
Haskell game engine library for roguelike dungeon crawlers; please offer feedback, e.g., after trying out the sample game with the web frontend at
Stars: ✭ 439 (+631.67%)
Mutual labels:  engine, library
Mtlpp
C++ Metal wrapper
Stars: ✭ 425 (+608.33%)
Mutual labels:  engine, rendering
Engine Native
Native engine for Cocos Creator
Stars: ✭ 488 (+713.33%)
Mutual labels:  vulkan, rendering
Vulkandemos
Some simple vulkan examples.
Stars: ✭ 413 (+588.33%)
Mutual labels:  engine, vulkan
Korge
KorGE Game Engine. Multiplatform Kotlin Game Engine
Stars: ✭ 780 (+1200%)
Mutual labels:  engine, 2d
Vkvg
Vulkan 2D graphics library
Stars: ✭ 394 (+556.67%)
Mutual labels:  vulkan, 2d
Ascii art
Real-Time ASCII Art Rendering Library
Stars: ✭ 599 (+898.33%)
Mutual labels:  rendering, library
Werender
Simple, light-weight, Canvas library for 2D rendering
Stars: ✭ 13 (-78.33%)
Mutual labels:  rendering, library
Intrinsic
Intrinsic is a Vulkan based cross-platform game and rendering engine. The project is currently in an early stage of development.
Stars: ✭ 984 (+1540%)
Mutual labels:  vulkan, rendering

Vulkan 2D Renderer library

❗️ This project is a work in progress (pre-alpha). Frequent API changes, ABI changes, crashes... ❗️

Vulkan 2D Renderer is a C++17 library designed to be easy to use, high performance 2D rendering backend for realtime applications. You only need a few lines of code to create a window and display simple shapes. On the other hand you can create a variety of different effects using meshes and applying different modifiers to them. Internally workloads are automatically grouped to create more efficient submissions to the GPU and all resource loading and saving is multithreaded.

latest screenshot

Motivation

  • This project is primarily a passion project.
  • Vulkan 2D rendering engines/libraries are not common.
  • I didn't find any easy to use 2D rendering libraries with multi-window support.
  • This should work pretty well as an example for people wanting to see concrete Vulkan API use. (Feel free to message me if you have any questions about anything)

Capabilities

  • Easily generate and draw simple shapes. ( Box, Circle, Pie... )
  • For more control you can also draw custom shapes direcly from vertex and index lists.
  • Transformations and transformation hierarchy.
  • Instanced rendering.
  • Multi-window support.
  • Mesh modifiers to warp and distort shapes.
  • Textures, Samplers, Color and alpha blending.
  • Render target textures with blurring.
  • Multisampling.
  • Multi-threaded resource loading and saving.
  • Keyboard, mouse and gamepad input.

Limitations

  • Does not render 3D, this is meant to be a simple library to use.
  • This is not a game engine, the purpose of this library is strictly limited to 2D drawing.
  • No HDRI image support. Didn't find any use for this in a 2D application.
  • No scene management, although transformation hierarchy is implemented so you can create your own.
  • No custom shaders, might implement these later if there's any need for these.
  • Work in progress. We'll know more about limitations later.
  • Crashes and garbage renders will likely happen frequently.

Building from source

❗️ You will need to use Git, direct download from GitHub will not work because of dependencies. ❗️

Prior to building this library on any platform you will need:

  • Git 2.20 or newer
  • CMake 3.16 or newer
  • Vulkan SDK 1.2 or newer

If using the build tool you will need (recommended for new users):

  • Python 3.8 or newer

If you're building the documentation you will also need these (disabled by default):

  • Doxygen 1.8.20 or newer

Getting the sources

Getting the sources is the same process on all platforms. On your command line or terminal, navigate to the folder where you wish to download the sources and copy-paste this line.

git clone https://github.com/Noxagonal/Vulkan2DRenderer

Compiling the sources

There are couple of ways to compile this library, you can use standard CMake or you can use the provided build tool.

Using the build tool

Navigate to the Vulkan2DRenderer folder and simply run Build.bat on Windows or Build.py on Linux. To get started quickly, you can select the quick build option, this will generate the project files in build_tool/Release and build_tool/Debug folders and compiles the project, on windows this library is also installed into a folder. Please note that the included build tool generates a build_tool folder and is reserved for the built tool itself.

Windows specifics

On Windows installing will create an build_tool/install folder which will contain everything you need to use this library on your project. You will have to manually link it to your project and move the VK2D.dll and VK2D_d.dll files somewhere where your executable can see it, usually to your project's working directory. The VK2D.dll is the release version and the VK2D_d.dll is the debug version of this library.

Linux specifics

On Linux installing requires superuser priviledges so you need to do this separately, the build tool will build the project files and compile but it will not install this library for you.


Included external libraries (packed in)

Library Licence Web page
GLM MIT/Happy Bunny https://github.com/g-truc/glm

External libraries used in this project

Library License Web page
GLM MIT/Happy Bunny https://github.com/g-truc/glm
Freetype 2 FTL https://www.freetype.org
GLFW 3 zlib/libpng https://github.com/glfw/glfw
STB MIT/Public Domain https://github.com/nothings/stb
glslang 'Custom' https://github.com/KhronosGroup/glslang

License

Copyright (c) 2020 Niko Kauppi [email protected]

This software is released under MIT license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].