Aluminium Gear (Metal Gear 3D)

A cross platform C++ OpenGL project running on PC and Raspberry Pi | 2025

Role · Cross-Platform · Rendering

Grade: 100/100

Overview

For BUAS block B we needed to recreate a metal gear solid style game in OpenGL on the raspberry pi (4) and PC
I chose to go deeper in some techniques like parallax adjusted cubemap reflections and particles.

GitHub Source

Aluminium Gear overview

Parallax adjusted reflection probes

One of the main features I added to the project was parallax adjusted cubemap reflections,

I added reflectionprobes to the level which took cubemap pictures on level load.

I then displayed these using a shader which mapped the cubemaps with perspective adjustement to make them look more real.

It works by moving the cubemap through the surface and doing a ray box intersection to sample the cubemap, this makes it look like the room is behind the surface and then i flip the map accordingly

Reflections video Reflection probes debug How it works
Particles in game Particles in engine

GPU Particles

I also wanted (loads) of particles in my game, so I added support for particles.

I made the particles run on the GPU as a compute shader and draw them instanced, This allows me to keep the data on the GPU saving long transfer times and runs very fast.

However I ran into a big problem with this on the pi, because the raspberry pi does not support data buffers for compute shaders,
To solve this I put all the data into a single channel texture which allowed me to also run this on the PI

Water

I also added water to my game, using perlin noise generated geometry and a depth based shader.

Water in game

Gameplay

Back to Projects