All projects

Academic work

A real-time renderer built from the maths up

A C++ and OpenGL engine written for the Computer Graphics course. It carries its own vector maths library and lighting shader, and an interactive scene where thrown light sources light the geometry around them as they move.

Nov 2025 – Jan 2026

The problem

The lights move with the player, so none of the lighting can be baked ahead of time. Every light is recomputed for every pixel of every frame, inside a fixed frame budget.

A scene you walk through, lit by fireballs you throw and a torch carried by the player. Every light is recomputed per pixel, every frame, with distance falloff and a spotlight cutoff. Nothing is baked ahead of time.

Compiled from commit 25e23fa with emcc 6.0.6 on . 818 KB in total.

I wrote this without an engine, so the vector maths, the camera and the shading are all implemented in the project rather than configured.

The course ran in the second half of the first semester of 2025/2026, so the months are that block rather than recorded dates.