Available at: https://github.com/Stuart-Flannigan/AntiAliasing
A test environment created to compare the real-time performance and visual output of different anti-aliasing techniques in 3D rendering. An Unreal Engine 5 plugin to monitor the performance of anti-aliasing techniques, manage testing and generate a visual output of the results.
Role: Developer
Team: 1 (plus academic supervisor)
Timeframe: 6 months
Engine: Unreal Engine 5 (C++, Blueprints), Python, HLSL
I built an indoor, saloon style environment to provide variations on lighting, shadows, object distances and geometry shapes.
This uses a MegaScans asset pack, available here
Unreal Engine has different techniques built in. FXAA, MSAA, TAA, TSR are all built in, with the option to disable them. These can be changed at runtime through console commands.
There is a plugin created by NVIDIA that allows for DLSS to be added into projects. This was used to provide an alternative option.
I also created a custom post-process shader to apply an anti-aliasing effect. This works by detecting edges and applying a blur. Using a post process material, this was written in a custom HLSL node.
To control the project, I created an engine subsystem. This served a few purposes. First, it provided the functionality for code to run both in the editor and in a compiled game. The subsystem controls the anti-aliasing type that is being used. A custom console command allows changing between the existing anti-aliasing types, as well as the additional techniques added in.
The engine subsystem controls the performance tracking. This works by creating a struct for the statistics of delta time, cpu time, gpu time, memory allocation and saving it to a csv file for the current test sequence.
A Python script is called once a test has ended. This calculates the averages of each value in the .csv file and generates a graph to visualise the data. Utilising the matplotlib library, the graph is displayed automatically once the test has ended and is saved as an image to be reviewed at a later time.