Research Associate - School of Earth and Environmental Sciences - University of Portsmouth
Virtual Reality software development and research.

Demonstrator - School of Creative and Cultural Industries - University of Portsmouth
Teaching python inside and outside of Maya and graphics programming principles to university students.
Bachelor's Degree, Computer Games Technology, First Class Honours.
University of Portsmouth


Custom 2D Game Engine

Development of a custom 2D game engine named Tide. Written in C# using monogame as a backend.
Tide is data oriented and utilises an architecture that draws heavily from the Entity-Component-System design. 

This project also includes development tools such as a WYSIWYG user interface creation tool that exports to XML files.
  • Monogame backend.
  • Custom UI system.
  • Custom physics engine with ropes support.
  • ECS architecture for support of many dynamic entities
  • Post processing stack with customisable draw passes.

I also ported Tide from Monogame and C# to C. Including it's use in a game jam.

  • GLFW for window management, Klib for data structures and GLM for maths operations.
  • Custom Spritebatch system that uses OpenGL and supports tens of thousands of sprites at >60fps.

3DTeLC VR tools (GeaVR)

I was one of the main developers of this VR training software. 
I was responsible for development of tools for data visualisation and measurements. I was also responsible for the design and implementation of pipelines for converting Geoscience data sets to navigable 3D environments in Unity.
  • Unity game engine for 3D navigation
  • Winforms and C# for GUI application
  • Conversion of .obj and jpeg files to serialised binary format for fast loading at runtime.
  • Conversion of GeoTif image files with embedded geo data to 3D models.
  • Multithreaded optimisation for loading multi-gigabyte terrain datasets at runtime without frame-rate dips. 




Virtual Reality Components in UE4

For this project I set out to create a set of modular components that could be combined together to create complex Virtual Reality setups.
This project was written in C++ and makes extensive use of Unreal engines reflection system to expose C++ functionality to the editor, as well as to allow developers to extend that functionality via blueprint interfaces and blueprint events.
  • Uses Unreal Engine and written in C++
  • Extensive use of delegates, interfaces and UPROPERTIES in order to expose functionality to the unreal editor. 
  • Generic Components for VR development.
  • Support for walking/flying/teleporting VR movement modes.


Sprite Atlas Addon for Blender
Development of a tool for automatically rendering 3d models to spritesheets. Features export of animation data to JSON and XML.


  • Automated rendering of 3d models
  • Automatic tiling of rendered image sequences into a 2D sprite sheet.
  • Exporting animation data to multiple data formats.


Addon source code available on Github



Technical Art Reel

A selection of various technical art projects created in an array of different softwares.

These projects showcase custom tools/workflows and optimisations I have created to speed up my own work.  

  • Use of Python for tools scripting and optimisation.
  • Procedural generation in Blender, Houdini and Substance Painter. 
  • Workflow tools to automate processes.

Top posts from this blog:

[Python, Blender]
Scripts for Importing and Rendering of pre-built 3D facial models in multiple HDRI lighting environments.
[C++, OpenCV, OpenGL, GLSL]
Removing lighting from face images in order to extract albedo values.
[C++, Leadwerks, GLSL]
A PBR system implemented in the leadwerks game engine. Leadwerks was chosen in order to show proficiency in working with constraints (lack of full documentation, closed source, working within an existing codebase). 

Exploring AI for texture generation

[Stable Diffusion, Materialize] 
Using stable diffusion and Materialize to generate PBR texture sets