Garden is an open-source, cross-platform game engine written in C++ that utilizes the Entity-Component-System (ECS) architectural pattern. The renderer is built on the Vulkan graphics API and features a custom shading language GSL (a GLSL dialect). The engine's primary goal is the creation of open, procedurally generated worlds, leveraging the latest GPU technologies and advanced rendering techniques, such as ray tracing and advanced compute shaders. Garden's architecture is designed to utilize all available hardware resources to reach maximum performance while remaining as developer-friendly and easy to use as possible.
The engine is under development right now, expect major architecture changes and instabilities.
If you need stable and production ready solution it's better to use Godot or Unreal Engine.
- Nvidia Kepler microarchitecture and newer
- AMD GCN microarchitecture and newer
- Intel Gen9 microarchitecture and newer
- Apple M1 integrated GPU and newer (partial support)
Or at least GPU with Vulkan API 1.2 support.
- Intel Haswell microarchitecture and newer
- AMD Excavator microarchitecture and newer
- Apple M1 processor and newer
These requirements are based on support of the AVX2
instruction set in the x86 architecture.
If you want, you can freely disable it and compile for older x86 CPUs, or any other architecture.
GSL is a GLSL dialect, created to simplify the usage of Vulkan subset. Documentation with all changes is here.
Also you can install the Visual Studio Code extension to highlight GSL code and see functions description.
git clone --recursive -j8 https://github.com/cfnptr/garden
--recursive: recursively clones all required git submodules-j: number of git submodules fetched in parallel
- C++17 compiler
- Git 2.53+
- CMake 3.25+
- vcpkg (Windows only)
- brew (macOS only)
Use building instructions to install all required tools and libraries.
| Name | Description | Default value |
|---|---|---|
| GARDEN_USE_AVX2 | Use AVX2 instruction set (Better perf) | ON |
| GARDEN_BUILD_EDITOR | Build base Garden editor | ON |
| GARDEN_BUILD_GSLC | Build GSL shader compiler | ON |
| GARDEN_BUILD_MODELC | Build Garden model converter | ON |
| GARDEN_BUILD_JSON2BSON | Build JSON to binary JSON converter | 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 |
| GARDEN_USE_ASAN | Use Clang address sanitizer | OFF |
| GARDEN_USE_MESA_RGP | Use Mesa Radeon GPU Profiler (RGP) | OFF |
| GARDEN_USE_NVIDIA_DLSS | Use Nvidia DLSS SDK (Auto-downloads repo) | OFF |
| GARDEN_USE_STEAMWORKS_SDK | Use Valve Steamworks SDK (Download it manually!) | OFF |
| Name | Description | Default value |
|---|---|---|
| GARDEN_APP_NAME | Application name | Garden Editor |
| GARDEN_APP_NAME_LOWERCASE | Application lowercase name | garden-editor |
| GARDEN_APP_NAMESPACE | Application C++ namespace name | garden::editor |
| GARDEN_APP_FILE_NAME | Application file name (executable) | garden-editor |
| GARDEN_APP_ICON_PATH | Application icon file path | |
| GARDEN_APP_DESCRIPTION | Application description | Made using Garden engine. |
| GARDEN_APP_CREATOR | Application creator (company) | {creator} Team |
| GARDEN_APP_COPYRIGHT | Application copyright (license) | (C) 20XX {creator}. 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_CACHE_DIR | Application cache directory | garden/.cache |
| GARDEN_STEAMWORKS_SDK_DIR | Valve Steamworks SDK directory | libraries/steamworks-sdk |
| GARDEN_NVIDIA_DLSS_APP_ID | Nvidia DLSS application ID | |
| GARDEN_NVIDIA_DLSS_PROJECT_ID | Nvidia DLSS project ID (GUID) | 5df9fb9c-bec4-4cf0-99c4-27b54fd7237e |
| Name | Description | Values |
|---|---|---|
| GLFW_PLATFORM | Force specific display protocol | x11 |
| Name | Description | Windows | macOS | Linux |
|---|---|---|---|---|
| garden | Static Garden library | .lib |
.a |
.a |
| {name} | Application executable | .exe |
.app |
- Assimp (assimp license)
- cURL (curl 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)
- OpenEXR (BSD-3-Clause license)
- OpenSSL (Apache-2.0 license)
- Pack (Apache-2.0 license)
- PNG (PNG-2 license)
- stb (MIT license)
- Tracy (BSD-3-Clause license)
- VulkanMemoryAllocator (MIT license)
- Vulkan SDK (Apache-2.0 license)
- volk (MIT license)
- WebP (BSD-3-Clause license)
- xxHash (BSD-2-Clause license)
- zlib (zlib license)
DLSS (Deep Learning Super Sampling) is a registered trademark of NVIDIA Corporation.

