
PORTFOLIO
Current Work
Honours
CMP400

Haboob Rendering | Coursework
This is my penultimate coursework submission for uni. It consists of a custom engine volumetric rendering application with the backing of a 155 page dissertation.
The application is public, you can find the github repo using this link ->
https://github.com/A9am777/CMP400-Project
Inspiration: real-time computer graphics research tends to target everyday effects like clouds and fog. What about the haboob dust storm? Atmospheric dust has not been investigated to a great extent...
Application: C++, CMake, D3D11, HLSL
Features:
-
Haboob volume generation
-
Single phase scattering
-
Novel (16 wavelength) spectral approximation
-
Geometric product integration
-
Real-time soft shadowing
-
Established workflow with statically optimised shaders


This is a standard render of the haboob

The haboob casts spectral shadows using a 16 wavelength approximation


This is a standard render of the haboob
Check out the blog post for more info!
Personal
Interpreter & Compiler | Personal Project
As a side project to my voxel engine, I have been designing a RISC based instruction set alongside an interpreter and compiler for the sole purpose of writing short, interpreted programs which primarily call complex, compiled functions that are a part of the host application.
The goal is to be able to run code from external files which describe how different voxel element types interact and react during events!
Being developed in C++. An open source project which you can find here
Personal
Voxel Engine/Game | Personal Project
An ambitious project where I'm programming a voxel-based simulation game. It will consist of destructible terrain and voxel 'objects' alongside living entities consisting of a tree structure of destructible object appendages.
As shown in the video, I'm currently working on a voxel object creation tool, which includes a 3d camera; movement of a selection box along the cardinal directions relative to the camera's orientation; and most importantly, neighbour voxel selection from raycasting (currently sphere based).
The raycasting was a unique challenge due to the lengths at which I went to optimise objects. Each object consists of a variation on the octree DS where each level spans a different predetermined range of voxels. The spatial partitioning is also relative to each object's local transform. All of this together increased the complexity of the raycasting algorithm
Made in C++ from scratch with only OpenGL, GLSL, Windows API and the Standard Library. Everything else, including I/O, maths, physics, etc. was programmed from scratch as my own static libraries
Past Work
CMP203
Graphics Programming | Coursework
A small scene which features procedurally generated trees, clouds and a train track. The clouds are animated in the wind and the track has a train which goes around it. As the train progresses, more track is generated!
Made in C++ with OpenGL1.0
CMP105
Games Programming | Coursework
This ̶t̶o̶t̶a̶l̶l̶y̶ ̶n̶o̶t̶ ̶a̶ ̶k̶n̶o̶c̶k̶o̶f̶f̶ game showcases a 2d lighting system, lightning/flashing in time with the music, a sprite-based UI system and a 2 player mode.
Made in C++ with SFML
To aid track creation, I also made a track creation tool in C# with GDI+








