Gemini is a hobby 3D engine project. It is designed exclusively for modern APIs (currently Vulkan is supported), and aims to be able to take advantage of the capabilities of those APIs (multithreading, multiple GPU queues, pre-baked pipeline state objects, etc.).
More screenshots and videos in the Screenshot Archive.
Features:
- Tile-based deferred lighting
- Physically-based shading
- Shadow mapping
- Render graph for automatically handling GPU synchronization and transient resource allocation
- Physics (using Bullet)
- Runtime object reflection/serialization, driven by code annotations used with a custom code generation tool
- glTF model importer
- Linux and Windows support
You must install the following requirements (including their development packages):
- SCons
- LLVM/clang
- SDL (2.x)
- Vulkan SDK
You must install the following requirements:
- Visual Studio 2019
- SCons
- Vulkan SDK
After cloning the repository you first need to clone submodules containing some external libraries:
$ git submodule update --init
You can then build by running SCons:
$ scons
And finally run the test game with:
$ Build/Release/Test
Options can be passed to SCons to configure the build, which will be saved until the next time they are specified. See scons -h
for details.
Example:
$ scons BUILD=Debug
Gemini is licensed under the ISC license.