top of page

PORTFOLIO

Current Work

Haboob rendering
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

Check out the blog post for more info!

​

Voxel Engine
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

(https://github.com/Oopskid/LittleBit)

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+

bottom of page