Skip to content
/ garden Public

An open source, cross platform game engine written in C++ with Vulkan API rendering backend

License

Notifications You must be signed in to change notification settings

cfnptr/garden

Repository files navigation

Garden

Engine screenshot

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.

Supported operating systems

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

Supported hardware

Graphics processing unit (GPU)

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

Central processing unit (CPU)

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

Build requirements CI

Use building instructions to install all required tools and libraries.

CMake options

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

CMake variables

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

CMake targets

Name Description Windows macOS Linux
garden Static Garden library .lib .a .a
{name} Application executable .exe .app

Cloning

git clone --recursive https://github.com/cfnptr/garden

Garden Shading Language (GSL)

Documentation with all GLSL changes is located here. You can install Visual Studio Code extension to highlight GSL code.

Third-party