Low Level Games Programming
In this final year module we were looking at the following topics:
- Memory management
- Performance Optimisation
- Tools development
- PS4 porting and Optimisation
For the memory management section we were instructed to make a system that would override the 'new' and 'delete' keywords in C++ to allow for memory tracing, management and walking. Below is a screen shot of the program output after creating and deleting many simple Game Object classes in a memory pool that can only contain 10.
Optimizing, extending and porting a ray tracer:
For the second part of the module, we were given a ray tracer. It was poorly written and very slow in it's execution. We were simply tasked with making it run faster, have more features and then porting it from the PC to the PS4. Without modification, the raytracer took 166 seconds to render and save a single 1920 x 1080 image. After making it multi threaded, streamlining the algorithms and using compiler optimizations, it took 0.05 seconds to render and save a HD image. To extend the renderer I built a UI tool in C# with Windows Forms for configuring the program and managing its outputs, I also got to put my memory management system into the ray tracer. Porting this application to the PS4 started half way though my expansion of the ray tracer, so not everything was brought over. It was an interesting and exciting experience I'd love to talk about but I'd personally rather not breach my Sony Developer NDA.
Code coming to github soon - when I create a duplicate repository void of all confidential copyrighted Sony Computer Entertainment code.