All Projects → AttilioProvenzano → goma-engine

AttilioProvenzano / goma-engine

Licence: MIT license
A simple C++ 3D game engine with Vulkan support.

Programming Languages

C++
36643 projects - #6 most used programming language
GLSL
2045 projects
CMake
9771 projects

Projects that are alternatives of or similar to goma-engine

wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (+647.06%)
Mutual labels:  engine, vulkan, renderer
DummyEngine
Small cross platform Vulkan/OpenGL 3d engine for personal experimentation
Stars: ✭ 76 (+123.53%)
Mutual labels:  engine, vulkan, renderer
Aether3d
Aether3D Game Engine
Stars: ✭ 177 (+420.59%)
Mutual labels:  engine, vulkan
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (+502.94%)
Mutual labels:  engine, vulkan
vkOpenArena
Old games never die, they just fade away...
Stars: ✭ 58 (+70.59%)
Mutual labels:  engine, vulkan
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+30052.94%)
Mutual labels:  engine, vulkan
Substrate
A cross-platform render-graph based rendering system written in Swift
Stars: ✭ 94 (+176.47%)
Mutual labels:  engine, vulkan
Flingengine
A Vulkan game engine with a focus on data oriented design
Stars: ✭ 239 (+602.94%)
Mutual labels:  engine, vulkan
Vulkust
An engine for Vulkan in Rust, tries to implement modern graphic features. (suspended for now)
Stars: ✭ 64 (+88.24%)
Mutual labels:  engine, vulkan
datum
Vulkan Renderer
Stars: ✭ 31 (-8.82%)
Mutual labels:  vulkan, renderer
Explosion
💥 A modern cross-platform game engine (WIP)
Stars: ✭ 102 (+200%)
Mutual labels:  engine, vulkan
tortuga
A modern game engine built using dot net core
Stars: ✭ 14 (-58.82%)
Mutual labels:  engine, vulkan
nautilus
another graphics engine
Stars: ✭ 16 (-52.94%)
Mutual labels:  vulkan, renderer
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 (+108.82%)
Mutual labels:  engine, vulkan
Innocenceengine
Cross-platform modern game engine.
Stars: ✭ 149 (+338.24%)
Mutual labels:  engine, vulkan
Tristeon3d
A 3D Engine built by two Game Engineering students.
Stars: ✭ 68 (+100%)
Mutual labels:  engine, vulkan
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (+520.59%)
Mutual labels:  engine, vulkan
Vulkan2drenderer
Easy to use 2D rendering engine using Vulkan API as backend.
Stars: ✭ 60 (+76.47%)
Mutual labels:  engine, vulkan
Nebula Trifid
Nebula Trifid
Stars: ✭ 62 (+82.35%)
Mutual labels:  engine, vulkan
Vqengine
DirectX 11 Renderer written in C++11
Stars: ✭ 250 (+635.29%)
Mutual labels:  engine, renderer

Goma 🌊

Build status

Goma is a simple 3D C++ game engine with Vulkan support.

This is a learning project, meant for experimenting with graphics techniques. It currently lacks most basic features of a full-fledged engine, so it should not be used for anything resembling production! 😛

The current plan is to add more features along the way, but I won't be developing/supporting it continuously. If you like the project and would like to contribute, issues/PRs are very welcome! :)

Helmet screenshot

Features

Goma currently supports Windows with a V-EZ backend. I have plans to port it to Android, but it will require a native Vulkan backend first.

These are some of the features that Goma supports:

  • PBR with IBL for specular
  • Runtime shader compilation with variants
  • Shader reloading at runtime
  • Mipmapping
  • MSAA
  • Mesh culling and sorting
  • Shadow maps with PCF
  • DoF

Build

Goma uses the CMake build system. It is tested with Visual Studio 2017 on Windows.

First clone the submodules of this repo:

git submodule update --init --recursive

Then run CMake:

mkdir build && cd build
cmake .. -G "Visual Studio 2017 Win64"

Then you can open the Visual Studio solution inside build and build it from there.

The target goma-engine is meant to be included as a shared library by applications. The test suite goma-tests shows usage examples.

License

Goma is licensed under the MIT license. Feel free to use it however you like! Contributions are accepted under the same license.

This project uses third party dependencies, each of which may have independent licensing:

  • assimp: A library to import and export various 3d-model-formats.
  • glfw: A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input.
  • glm: A header only C++ mathematics library for graphics software.
  • googletest: A testing framework.
  • outcome: Provides lightweight outcome<T> and result<T>.
  • spdlog: Fast C++ logging library.
  • stb: Single-file public domain (or MIT licensed) libraries for C/C++.
  • variant: An header-only alternative to boost::variant for C++11 and C++14.
  • V-EZ: A wrapper intended to alleviate the inherent complexity of the Vulkan API.
  • volk: Meta loader for Vulkan API.
  • Vulkan-Headers: Vulkan header files and API registry.

PBR shaders are taken from glTF-Sample-Viewer with modifications to adapt them to Vulkan GLSL.

3D models are taken from glTF-Sample-Models. Each model may have its own license.

Other credits:

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