Skip to content
tomconderPublic

About

A game engine featuring physically-based rendering (PBR). It is built with modern C++23 and OpenGL, targeting both Windows and Linux platforms

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

2 watching

Forks

Repository files navigation

Maze

A game engine featuring a nice walk through a maze.

work in progress

Features

  • Platform portability: OpenGL and C++ for Windows and Linux
  • Physically based rendering (PBR)
  • Cook-Torrance microfacet specular BRDF
  • Specular anti-aliasing: the highlight widens with the screen-space variance of the normal, so sub-pixel highlights do not sparkle
  • glTF 2.0 materials: albedo, normal, occlusion, emissive and metallic-roughness maps, with KHR_texture_transform
  • Clear coat (KHR_materials_clearcoat): a second specular lobe over the base, with its own probe reflection (factors only, no textures)
  • Diffuse transmission (KHR_materials_diffuse_transmission): thin translucent surfaces such as leaves, paper and ceramic glow when lit from behind (strength map supported, no color map, no shadow on the transmitted light)
  • Point lights and directional light
  • Clustered (volume-tiled) light culling
  • Exponential variance shadow maps (EVSM) with Dual Kawase blur
  • Selectable tone mapping: AgX (default), ACES, Filmic or Reinhard
  • Physically based bloom, run as compute passes
  • Screen-space ambient occlusion (SSAO)
  • Screen-space reflection (SSR) for objects marked reflective in the scene file
  • Planar reflection for flat mirrors
  • Reflection probe with box-projected specular reflections
  • Screen-space refraction for glass objects, with index of refraction, thickness and tint (built in, switched off for now)
  • Camera frustum and hardware occlusion culling
  • Selectable anti-aliasing: FXAA or temporal (TAA)
  • Shaders written in Slang, compiled at build time into one shader pack
  • Build-time asset converter: glTF 2.0 models baked to an engine format, so the game links no asset parser
  • BC7 and BC5 texture compression with mipmaps in KTX2, encoded on every core
  • UI icons packed into a sprite atlas
  • LCD subpixel text with subpixel positioning, rasterized with FreeType and shaped with HarfBuzz at build time
  • Flexbox-based UI layout with Yoga
  • Menus that scale with the window width: the font, option rows, tab bar and key hints follow width / 1920
  • Options screen with Display, Keyboard and Audio tabs: display mode (windowed, full screen or borderless window), aspect ratio, resolution, vsync, anti-aliasing, shadow quality, ambient occlusion, bloom, subsurface scattering, key rebinding and volumes, with smooth scrolling
  • Audio playback with miniaudio
  • Draggable slider widget for Master/Sfx/Music volume, with mouse, keyboard and gamepad support
  • Performance profiling with Tracy
  • Gamepad support
  • Dear ImGui debug UI
  • Third-party license notices assembled at build time and shipped with the game

Project Organization

assets/          # game assets
docs/            # documentation
game/            # source files for maze
sponge/          # source files for sponge game engine
tools/           # tools and utility scripts, including the assetconv asset converter

Getting Started

For instructions on how to build and run the application, please refer to the full documentation

About

A game engine featuring physically-based rendering (PBR). It is built with modern C++23 and OpenGL, targeting both Windows and Linux platforms

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

2 watching

Forks

Packages

Used by

Contributors

Languages