Self-taught computer programmer Alex Fish published a demonstration of a 3D graphics and physics engine he made entirely from scratch — running on a GPU he made from basic parts. The GPU itself features a built-in screen with thumbsticks to control on-screen graphics.
This story is very similar to the homemade FuryGPU we covered a week ago. But this homemade GPU from Alex Fish is geared towards the software side of GPU development — rather than just the GPU hardware alone.
The hardware itself was made with various off-the-shelf parts that you can buy yourself. The parts consist of an AMOLED 1.91-inch display with a development board wireless module attached to it, SparkFun Joysticks, and a SparkFun Qwiic Mux breakout board.
While the hardware isn’t completely custom, Alex’s 3D engine used on the homemade GPU is. The programmer built the 3D graphics and physics engines (dubbed the ESPescado engine) completely from scratch using C++ and OpenGL. Even the libraries, featuring the vector and matrix math, were written from scratch. The physics and geometry are rendered in 3D — however, to make the images truly look 3D, the engine uses a perspective projection matrix and perspective division to turn 3D objects into 2D images. These are the fundamentals of 3D graphics.
The homemade 3D engine also takes advantage of meshes. Meshes are made from points and lines that are grouped into triangles, which are then grouped into meshes. In video-game terminology, meshes form the foundation of objects and terrain that we see in-game, and are what gives them their photo-realistic characteristics. These meshes are placed into the “world” with a model-to-world matrix (TRS). The TRS system can scale, rotate, and translate every point visible from local space to world space.
Alex was able to share a live demo of this homemade graphics engine working on his tiny 1.91-inch GPU development kit. A YouTube video shows the GPU displaying a green triangular object on a black background. With the two joysticks he connected to the GPU, he was able to move the object around, similar to a third-person viewpoint in a video game.
The demo itself isn’t groundbreaking, but it proves that handmade 3D graphics engines can be made from scratch. If Alex has connections with Dylan Barrie — creator of the FuryGPU — we could potentially see a full-blown 3D video game run entirely off of homemade hardware and software. If you want to check out Alex’s 3D engine, he has created a couple of GitHub pages with details on the 3D engine as well as the hardware he used to run it.