Garden is an open source, cross platform game engine designed for efficiency and flexibility. Written in modern C++ and utilizing the Vulkan API for rendering, it is aimed at providing developers with a robust toolset for creating high-performance, visually stunning games. The main features of the engine include extensible architecture, built-in editor, convenient creation of rendering pipelines using a custom shader language (GSL), and automatic placement of GPU memory barriers, which are necessary in recent graphics APIs. See the features list.
- Windows (10/11)
- Ubuntu (22.04/24.04)
- macOS (14/15)
This list includes only those systems on which functionality testing is conducted. However, you can also compile it under any other Linux distribution or operating system.
- Nvidia Kepler microarchitecture and newer
- AMD GCN microarchitecture and newer
- Intel Gen9 microarchitecture and newer
- Apple M1 integrated GPU and newer (partial support)
At least GPU with Vulkan API 1.1 support.
- Intel Haswell microarchitecture and newer
- AMD Excavator microarchitecture and newer
- Apple M1 processor and newer
These requirements are based on the support of the AVX2 instruction set. If you want, you can freely disable it and compile for any other architecture, including ARM.
- C++17 compiler
- Git 2.39+
- CMake 3.24+
- vcpkg (Windows only)
- brew (macOS only)
Use building instructions to install all required tools and libraries.
Name | Description | Default value |
---|---|---|
GARDEN_BUILD_GSLC | Build GSL shader compiler | ON |
GARDEN_BUILD_EQUI2CUBE | Build equirectangular to cubemap converter | ON |
GARDEN_RELEASE_EDITOR | Build Garden editor in the release build | OFF |
GARDEN_RELEASE_DEBUGGING | Build Garden debugging code in the release build | OFF |
GARDEN_DEBUG_PACK_RESOURCES | Pack and load resources in the debug build | OFF |
GARDEN_USE_GAPI_VALIDATIONS | Use graphics API validation layers | ON |
Name | Description | Default value |
---|---|---|
GARDEN_APP_NAME | Garden application name | Garden App |
GARDEN_APP_NAME_LOWERCASE | Garden application lowercase name | garden-app |
GARDEN_APP_FILE_NAME | Garden application file name (executable) | Garden App |
GARDEN_APP_DESCRIPTION | Garden application description | Made using Garden engine. |
GARDEN_APP_CREATOR | Garden application creator (company) | Garden |
GARDEN_APP_COPYRIGHT | Garden application copyright (license) | 20XX {name} All rights reserved. |
GARDEN_APP_VERSION_MAJOR | Garden application major version | 1 |
GARDEN_APP_VERSION_MINOR | Garden application minor version | 0 |
GARDEN_APP_VERSION_PATCH | Garden application patch version | 0 |
GARDEN_APP_RESOURCES_DIR | Garden application resources directory | garden/resources/default |
GARDEN_APP_CACHES_DIR | Garden application caches directory | garden/.caches |
Name | Description | Windows | macOS | Linux |
---|---|---|---|---|
garden | Static Garden library | .lib |
.a |
.a |
{name} | Application executable | .exe |
.app |
git clone --recursive https://github.com/cfnptr/garden
Documentation with all GLSL changes is located here. You can install Visual Studio Code extension to highlight GSL code.
- Conf (Apache-2.0 license)
- ECSM (Apache-2.0 license)
- FastNoise2 (MIT license)
- FreeType (FreeType license)
- GLFW (zlib license)
- ImGui (MIT license)
- JoltPhysics (MIT license)
- JSON (MIT license)
- Logy (Apache-2.0 license)
- Math (Apache-2.0 license)
- Nets (Apache-2.0 license)
- OpenSSL (Apache-2.0 license)
- Pack (Apache-2.0 license)
- PNG (PNG-2 license)
- stb (MIT license)
- TinyEXR (BSD-3-Clause license)
- VulkanMemoryAllocator (MIT license)
- Vulkan SDK (Apache-2.0 license)
- Voxy (Apache-2.0 license)
- WebP (BSD-3-Clause license)
- xxHash (BSD-2-Clause license)
- zlib (zlib license)