All Projects → karnkaul → LittleEngineVk

karnkaul / LittleEngineVk

Licence: GPL-3.0 license
3D game engine using C++20 and Vulkan (WIP)

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to LittleEngineVk

Nebula
Nebula is an open-source and free-to-use modern C++ game engine.
Stars: ✭ 224 (+157.47%)
Mutual labels:  vulkan, game-engine-3d
scop vulkan
A 3D model viewer written C++20 and Vulkan
Stars: ✭ 133 (+52.87%)
Mutual labels:  vulkan, cpp20
RTX-Mesh-Shaders
Different mesh shading techniques using the NVIDIA RTX (Turing) technology.
Stars: ✭ 84 (-3.45%)
Mutual labels:  vulkan, cpp20
Yggdrasil-Legacy
Experimental Vulkan Renderer / Game Engine written in C++20.
Stars: ✭ 20 (-77.01%)
Mutual labels:  vulkan, cpp20
RavEngine
A fast, easy to use C++20 3D game library for modern computers
Stars: ✭ 122 (+40.23%)
Mutual labels:  vulkan, cpp20
HitagiEngine
DirectX12 game engine
Stars: ✭ 51 (-41.38%)
Mutual labels:  cpp20
LowLevelAPIDemo
Evergine Low-Level API samples.
Stars: ✭ 12 (-86.21%)
Mutual labels:  vulkan
ogl to vlk
Vulkan Tutorials For OpenGL Developers
Stars: ✭ 16 (-81.61%)
Mutual labels:  vulkan
engine
A personal game engine project, with development focus towards 2D/2.5D games.
Stars: ✭ 32 (-63.22%)
Mutual labels:  cpp20
oof
Convenient, high-performance RGB color and position control for console output
Stars: ✭ 764 (+778.16%)
Mutual labels:  cpp20
go-vk
Go bindings for Vulkan
Stars: ✭ 20 (-77.01%)
Mutual labels:  vulkan
Vulkan-MemoryModel
Vulkan Memory Model
Stars: ✭ 95 (+9.2%)
Mutual labels:  vulkan
qcoro
C++ Coroutines for Qt
Stars: ✭ 150 (+72.41%)
Mutual labels:  cpp20
mojoshader
Use Direct3D shaders with other 3D rendering APIs.
Stars: ✭ 91 (+4.6%)
Mutual labels:  vulkan
drivers-linux-firmware
MOVED: https://gitlab.com/q3aql/drivers-linux-firmware
Stars: ✭ 28 (-67.82%)
Mutual labels:  vulkan
Simple-Log
dnkpp.github.io/Simple-Log/
Stars: ✭ 13 (-85.06%)
Mutual labels:  cpp20
cxbqn
BQN virtual machine
Stars: ✭ 20 (-77.01%)
Mutual labels:  cpp20
VkInline
A tool to make it easy to use Vulkan from Python. An interface for computation and off-screen rendering.
Stars: ✭ 16 (-81.61%)
Mutual labels:  vulkan
AngryEngine
Game Engine for Windows by Vulkan SDK
Stars: ✭ 20 (-77.01%)
Mutual labels:  vulkan
vulkan-seed
🌋🌱 A Vulkan starter repo that you could use to get the ball rolling.
Stars: ✭ 57 (-34.48%)
Mutual labels:  vulkan

Little Engine Vulkan

A simple C++20 3D game engine using a customizable Vulkan renderer.

Documentation is located here (WIP).

Build Status Codacy Badge

Screenshot

Features

  • window
    • Multi-platform windowing
      • Windows, Linux: via GLFW
    • Keyboard, mouse, and gamepad support
  • graphics
    • Bootstrapped Vulkan render context
    • Customizable off-screen (forward) renderer
    • Multiple command buffers per frame
    • Customizable device selection
    • Deferred resource release
    • Async transfers
    • Shader reflection via SPIR-V Cross
    • Automatic pipeline creation
    • Per pipeline descriptor set lists
    • Stall-less API (including swapchain recreation)
    • sRGB and linear colour spaces
    • TrueType font support via dynamic texture atlases
  • engine
    • Thread-safe AssetStore
      • Multi-reader single-writer API
      • Store any T associated with a Hash
      • Customizable asset loaders
      • Asset hot reload support: shaders, pipelines, textures implemented
    • Customizable Editor (via Dear ImGui)
    • Bitmap Fonts and 2D Text
    • GUI view/widget trees
    • Basic 3D AABB collision detection
  • libs/*
    • Multi-threaded task scheduler
    • Archetypal entity-component framework
    • JSON parser, de/serializer
    • Formatted logger
  • CMake install and find_package support

Limitations

  • No dynamic library support on Windows
  • Single render pass

Requirements

  • CMake 3.14+
  • Git
  • C++20 compiler and stdlib (modules, coroutines, and ranges are not yet used)
  • OS with desktop environment and Vulkan loader (libvulkan1.so / vulkan1.dll)
    • Windows 10
    • Linux: X, Wayland (untested), Raspberry Pi OS (64 bit bullseye+)
  • GPU supporting Vulkan 1.0+, its driver, and loader
  • Vulkan SDK / glslc (for compiling glsl shaders to SPIR-V in Debug, and validation layers)

Usage

LittleEngineVk (levk-engine) is a library intended to be built from source and linked statically, it currently does not support any installation / packaging. At present it ships with one hacked-together levk-demo application as an example, which will be split up and expanded upon in the future.

Building levk-demo

  • Clone this repo (manually initializing git submodules is not required, it will be done during CMake configuration)
  • Use CMake and a generator of your choice to configure an out-of-source build (build and out are ignored in git)
  • If using CMake 3.20+ / Visual Studio in CMake mode / CMake Tools with VSCode, cmake/CMakePresets.json can be copied/symlinked to the project root for convenience
    • Use cmake --preset <name> to configure and cmake --build --preset <name> to build on the command line
    • VS CMake and VSCode CMake Tools should pick up the presets by themselves
    • The presets are not checked into the repo root since some IDEs/editors force its usage if present there
  • For other scenarios, use CMake GUI or the command line to configure and generate a build
    • Command line: cmake -S . -B out && cmake --build out
    • If using an IDE generator, use CMake GUI to configure and generate a build, then open the project/solution in the IDE and build/debug as usual

External Dependencies

CMake submodules

Original repository

LICENCE

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].