Gedeng

Game engine snippets for the university course Game Engine Design (GED) with rendering functionality for Shader Programming (SPG).

Building

Run scons in the root directory. This will generate two things:

  1. the shared library in lib/
  2. test binaries in test/bin/ which use the library created in step 1

Full Demo Binary

Among the generated test binaries is the full-demo.out which tests all SPG-related functionality:

  • 3D Texture: a volume is rendered using the Marching Cubes technique. Moving up and down offsets it vertically.
  • Bump Mapping: the ground texture is seemingly 3-dimensional thanks to bump mapping. 5/6 and 7/8 can be used to set the steps and refinement steps respectively. 9/0 sets the depth.
  • GPU Particle System: the fireworks can be positioned by clicking the ground. 1/2 changes the update rate interactively.
  • Soft Shadows: Variance Shadow Mapping smoothes out the shadows and prevents issues such as shadow acne.
  • Tessellation: demonstrated by the little quad with terrain on it. 3/4 sets the tessellation factor.

General input: WASD and mouse for movement, X to enable wireframe rendering.

Developing

The scons command also generates a compile_commands.json which can be used by the VSCodium extension clangd for autocompletion, debugging, etc.

Build and run scripts for VSCodium are provided as well.

Credits

Catch2 for unit tests: https://github.com/catchorg/Catch2

Base structure inspired by TheCherno's Hazel Engine series: https://github.com/TheCherno/Hazel

Some shader-related code adapted from LearnOpenGL: https://learnopengl.com/

Description
Game Engine snippets for GED
Readme 672 KiB
Languages
C++ 96.6%
GLSL 3.1%
Python 0.2%