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 CI

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 memory barriers, which are necessary in recent graphics APIs.

Features

  • Cross-Platform Compatibility
  • Entity Component System (ECS)
  • Built-in Editor (ImGui)
  • Deferred Rendering (G-Buffer)
  • Physically Based Rendering (PBR)
  • Image-Based Lighting (IBL)
  • Gamma Correction (HDR)
  • Tone Mapping (ACES, Uchimura)
  • Automatic Exposure (AE)
  • Light Bloom (Glow)
  • Screen Space Ambient Occlusion (SSAO)
  • Fast Approximate Anti-Aliasing (FXAA)
  • Cascade Shadow Mapping (CSM)
  • Skybox Rendering (Cubemap)
  • Perspective / Orthographic Camera
  • Infinite far plane (Reverse Z-Buffer)
  • Frustum Culling (AABB)
  • Bounding Volume Hierarchy (BVH)
  • Opaque / Translucent / Cutoff Shaders
  • Vulkan API 1.3 backend
  • Multithreaded Rendering
  • Automatic Memory Barriers
  • Bindless Descriptors
  • Custom Shader Language (GSL)
  • Easy To Use Rendering Pipelines
  • Linear Resource Pool
  • Built-in Thread Pool (Tasks)
  • Settings / Logging System
  • Scene Serialization / Deserialization
  • First Person View (FPV)
  • .web / .png / .jpg / .exr / .hdr Support
  • glTF Model And Scene Loader
  • Config File Reader / Writer
  • Resource Pack Reader / Writer
  • Equi To Cube Map Converter

Planned Features

  • Procedural Atmosphere (Sky)
  • Screen Space Reflections (SSR)
  • Motion Blur
  • Forward Rendering
  • Vignette Post-Process
  • Depth Of Field (DOF)
  • Physical Based Camera
  • Screen Space Shadows (SSS)
  • Froxel Culled Lights
  • GPU Occlusion Culling
  • Chromatic Abberation
  • Lens Flare / Glare
  • Color Grading (ACES)
  • Lens Distortion
  • God Rays
  • Volumetric Smoke / Clouds
  • Soft / Point Shadows
  • Translucent Shadow Maps
  • Vulkan Memory Aliasing
  • Particles / Trails
  • 2D Tile Maps (9-sliced)
  • Nvidia DLSS Support
  • Nvidia Reflex Support
  • AMD FSR Support
  • Physics Support (Jolt)
  • Hardware Ray-Tracing
  • Ray-Traced Shadows
  • HDR Monitor Support
  • Virtual Reality Support
  • Consoles Support
  • Mobiles Support

Supported operating systems

  • Windows (10/11)
  • Ubuntu (22.04 LTS)
  • macOS (Monterey 12)

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 GPUs

  • Nvidia Maxwell microarchitecture and newer
  • AMD GCN microarchitecture and newer
  • Intel Gen9 microarchitecture and newer
  • Apple M1 processor and newer (partial support)

Build requirements

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

CMake variables

Name Description Default value
GARDEN_APP_NAME Garden application name GardenApp
GARDEN_APP_NAME_LOWERCASE Garden application lowercase name gardenapp
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
GARDEN_APP_CACHES_DIR Garden application caches directory garden/.caches

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

  • cgltf (MIT license)
  • Conf (Apache-2.0 license)
  • ECSM (Apache-2.0 license)
  • FastNoise2 (MIT license)
  • FreeType (FreeType license)
  • GLFW (Zlib license)
  • Imath (BSD-3-Clause license)
  • ImGui (MIT license)
  • Logy (Apache-2.0 license)
  • Math (Apache-2.0 license)
  • Nets (Apache-2.0 license)
  • OpenEXR (BSD-3-Clause license)
  • Pack (Apache-2.0 license)
  • stb (MIT license)
  • VMA (MIT license)
  • Voxy (Apache-2.0 license)
  • WebP (BSD-3-Clause license)
  • xxHash (BSD-2-Clause license)
  • Vulkan (Apache-2.0 license)