33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
# 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/
|