PavlosMak / UnnamedGameEngine

OpenGL 3D game engine built on top of the ENTT entity component system with support for shadow mapping, PBR materials, Bézier curve animations and SDF glyph rendering.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The Unnamed Game Engine

interactive material editing

The Unnamed Game Engine, is a 3D game engine build with OpenGL and using ENTT as a backbone for its entity component system. A complete list of features (and demonstrations) is given below.

Please note that the engine is still developing and subject to big changes.

Feature List

At its current state the game engine supports the following features.

Physically Based Rendering Materials

The game engine implements various forms of PBR textures, using the Cook-Torrance BRDF and the GGX (as demonstrated by Burley and Brent, 2012) material models. Concretely the engine allows creating and editing PBR materials from scratch. An example using the interactive inspector is shown below:

interactive material editing

Additionally, the engine supports textured PBR materials with albedo, normal, roughness, metallic and ambient occlusion maps. These textured materials can even be combined to create animations likes this one:

oscillating pbr texture

Shadow Mapping

The game engine implements real-time shadows using shadow mapping and supports multiple light sources. To mitigate anti-aliasing the shadow map is filtered using percentage closest filtering as described by Reeves et. al, 1987.

shadow mapping

Signed Distance Field Glyph Rendering

To render glyphs, the game engine implements the signed distance field introduced by Green, 2007. With this technique we can even create effects such as animating the width of fonts as shown in the example below.

sdf glyphs

Animation

For animations the engine supports composite cubic Bézier curves animation:

example of Bezier curve animation

Furthermore, the engine allows for hand-programmed joint animations to create effects like this one:

example of hierarchical animation

Running Instructions

First clone the repository. After you can either open the project in your favorite IDE or manually build and run.

To manually build, first navigate inside the project by running:

cd UnnamedGameEngine

Then make the build directory and navigate inside of it:

mkdir build && cd build

Last generate the makefiles and build the project:

cmake .. && make 

You should now be able to find the Game executable which you can use to launch the example game.

Future work

This is a non-exhaustive list of features we would like to add to the game engine. Feel free to get in touch if you want to implement any of them (or some other feature).

  • Physics system
  • Audio system
  • Frustum Culling
  • (Animated) Skyboxes

References

  1. Cook, Robert L., and Kenneth E. Torrance. "A reflectance model for computer graphics." ACM Siggraph Computer Graphics 15.3 (1981): 307-316.
  2. Burley, Brent, and Walt Disney Animation Studios. "Physically-based shading at disney." ACM Siggraph. Vol. 2012. vol. 2012, 2012.
  3. Reeves, William T., David H. Salesin, and Robert L. Cook. "Rendering antialiased shadows with depth maps." Proceedings of the 14th annual conference on Computer graphics and interactive techniques. 1987.
  4. Green, Chris. "Improved alpha-tested magnification for vector textures and special effects." ACM Siggraph 2007 courses. 2007. 9-18.

About

OpenGL 3D game engine built on top of the ENTT entity component system with support for shadow mapping, PBR materials, Bézier curve animations and SDF glyph rendering.


Languages

Language:C++ 98.7%Language:GLSL 1.0%Language:CMake 0.3%Language:C 0.1%