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.
Also check out the Garden demo app.
- 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 |
GARDEN_USE_TRACY_PROFILER | Use Tracy frame profiler | OFF |
Name | Description | Default value |
---|---|---|
GARDEN_APP_NAME | Application name | Garden App |
GARDEN_APP_NAME_LOWERCASE | Application lowercase name | garden-app |
GARDEN_APP_NAMESPACE | Application C++ namespace name | garden::app |
GARDEN_APP_FILE_NAME | Application file name (executable) | Garden App |
GARDEN_APP_ICON_PATH | Application icon file path | |
GARDEN_APP_DESCRIPTION | Application description | Made using Garden engine. |
GARDEN_APP_CREATOR | Application creator (company) | Garden |
GARDEN_APP_COPYRIGHT | Application copyright (license) | 20XX {name} All rights reserved. |
GARDEN_APP_VERSION_MAJOR | Application major version | 1 |
GARDEN_APP_VERSION_MINOR | Application minor version | 0 |
GARDEN_APP_VERSION_PATCH | Application patch version | 0 |
GARDEN_APP_RESOURCES_DIR | Application resources directory | garden/resources/default |
GARDEN_APP_CACHES_DIR | 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 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)
- Tracy (BSD-3-Clause license)
- VulkanMemoryAllocator (MIT license)
- Vulkan SDK (Apache-2.0 license)
- volk (MIT license)
- Voxy (Apache-2.0 license)
- WebP (BSD-3-Clause license)
- xxHash (BSD-2-Clause license)
- zlib (zlib license)