BACK

Background

The final project demonstrated here was created over the course of three modules - Real Time Rendering Framework (RTRF), Applied Mathematics for Games (AMG) and Advanced Real Time Graphics (ARTG). As well as this, some extra features have been worked on that have not been relevant to the aforementioned modules.

RTRF was an introduction into using DirectX 11, wherein were we tasked with creating a simple Engine that can render a scene with several different meshes and textures - with a Blinn lighting shader.
This version of the engine was very simplistic - with each object having to be programmatically added to the scene. This would require a recompilation of the project each time a value was changed. As well as this, it required passing many variables to a factory class that would handle the creation of each object - meaning that each object type was explicitly different.
Outside basic rendering and asset management the other extra features added in this iteration was multiple point lights with Blinn-Phong shading and basic scene graph in the background. DirectX 11 RTRF Preview

AMG required adding Physics to a framework - I chose to use the previous version for this, however much of it was rewritten.
To begin with, a JSON loaded was added that could load assets from a file at runtime - this immediately saves the recompilation required when changing objects in the scene, as well as faster creation of new objects for the engine.
To compliment this loading system, the 'game object' system was changed to be significantly more generic. Each object is now absolutely required to have a TransformComponent, which is hardcoded to a GameObject. With every other Component, such as a LightComponent being added to a List<BaseComponent>.
Each Component has three functions: Update, FixedUpdate and Draw. Whilst a Component isn't required to use any, it allows the component to hook into the primary engine loop.
This version of the engine also uses smart pointers for everything - which was primarily done as a test. However, it allows for better context for some checks required by the engine - for example, the PhysicsComponent needs to check if there is a ColliderComponent present to apply angular velocity to the collider.
For the Physics itself, the physics system handles several different forces: Gravity, Drag, Friction, Angular Momentum, Impulse, Restitution and an additive force system.



ARTG is an introduction to more-modern rendering techniques, such as deferred rendering. As this module is in progress at the time of writing, there is not much to talk about in regard to the implementation of any of the features required for this module.