Portal Framework

This is the framework that will be used to recreate Portal for which I already made a prototype in Unity (available here).

At the start of the course, we receive a starter project with  barebone implementation of the Overlord engine, consisting of the game loop, PhysX, ImGUI, and an implementation of DirectX11 with the Effects Framework. From this point, we have to implement the different materials and shaders required for the rendering of the game, as well as some PhysX related elements.

Implemented features

Credits

Credits to Thomas Goussaert , DAE lecturer for Graphics Programming 1 and 2, for the base framework implementation.

Hardware animations & Shadow mapping

This small demo shows the results of the hardware animation, as well as the shadow mapping. For the animation, the current frame's bones transforms are interpolated using the current animation tick and the animation's key frames. The result is then passed to the shader to be used by the vertex shader. Each vertex can be skinned to a max of 4 bones, using the according blend weights.

For the shadow mapping, a render target is used to render the depth of every objects in the scene relative to the main directional light. This depth buffer is then used by the objects' shader to determine whether the pixel is shaded or not.

Post-processing effects

Here is an example of the two post-processing effects that were implemented. The first one is a grayscale effect, replacing every pixel's color by it's unweighted average of the R, G and B channels.

The second one is a blur effect, blending the color of each pixel with its surrounding neighbourghs.

Deferred rendering & Volumetric lights

Deferred rendering is the last topic covered in this course. This uses a GBuffer to separate the ambient light, diffuse color, specular and normals into different targets, then combining all these during the main directional light pass. Finally, volumetric lights can be added afterwards.

The test scene consists of the famous Sponza scene, a flickering and moving green point light, and a static red spotlight in the back.

The project is not publicly available on GitHub!

As this project will serve as the final assignment for a course, where everyone recreates an existing game, I will not make this code available publicly, to prevent any potential plagiarism issues from other students that also chose Portal.

If you want to have a look at this code, please contact me via email, so I can add your GitHub account to the project.