Programmer builds homemade GPU, shows it off with 3D graphics and physics engine made from scratch

Alex Fish' Homemade 3D graphics engine
(Image credit: YouTube - Alex Fish)

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.

Latest Videos FromTom's Hardware
Aaron Klotz
Contributing Writer

Aaron Klotz is a contributing writer for Tom’s Hardware, covering news related to computer hardware such as CPUs, and graphics cards.

  • -Fran-
    This reminds me... Where's DX13? LOL

    Regards.
    Reply
  • Eximo
    My money is on the next big thing that Microsoft adds to DX is AI. They will probably brand it as Direct AI or something.
    Reply
  • TechyInAZ
    -Fran- said:
    This reminds me... Where's DX13? LOL

    Regards.

    I feel like DirectX has turned into a service, similar to Windows LOL. Cause by now, yeah there would of definitely been DX13.
    Reply
  • vior331
    This reads like the article author has never heard of software 3D-renderers before :p This particular one happening to be run on a microcontroller (personally I find calling this a "GPU" a stretch, given the microcontroller just so happens to at the current moment be running software that outputs IO that the screen-side controller can interpret as input).

    I should mention that the "written from scratch" part (that isn't commonly written in 3D-renderer implementations these days) really is primarily just a couple-hundred lines of point, line and triangle-fill drawing code (that substitute the original OpenGL calls the creator used previously). (Actually outputting the buffer to the screen was done using a pre-existing library.) The implementation of meshes, transform/projection matrices, a 3D-math library, physics, ... is all basic game/graphics programming that is commonly written for/along-side 3D-renderers (anybody that's followed decent e.g. OpenGL and game-dev tutorials has likely implemented these).

    I congratulate the person on succeeding with this project (unironically :)) and the article author for having managed to pass this as TH-tier news.
    Reply
  • bit_user
    vior331 said:
    This particular one happening to be run on a microcontroller (personally I find calling this a "GPU" a stretch, given the microcontroller just so happens to at the current moment be running software that outputs IO that the screen-side controller can interpret as input).
    Thank you for looking into this. Imagine my amazement when I read an article about someone building a GPU, and yet the details of the actual GPU are the part conspicuously missing!! Simply beyond ridiculous.

    vior331 said:
    I should mention that the "written from scratch" part ... really is primarily just a couple-hundred lines of point, line and triangle-fill drawing code (that substitute the original OpenGL calls the creator used previously).
    Back when I first started dabbling with 3D graphics, this was the only option. OpenGL existed, but not on any hardware I could afford.
    Reply
  • DieReineGier
    Well, back in the day when CPU clocks were below 100 MHz I painted some shaded surfaces made from meshed triangles. I used homogeneeous coordinates to merge all mathematical operations needed to project the model to the 2D screen space into the very same matrix. I wouldn't have called it even the core of a 3D engine.

    The article seems to oversell a little, doesn't it?

    However I like the idea of using the acceleration sensor to control the rotation of the model!
    Reply
  • bit_user
    DieReineGier said:
    Well, back in the day when CPU clocks were below 100 MHz I painted some shaded surfaces made from meshed triangles. I used homogeneeous coordinates to merge all mathematical operations needed to project the model to the 2D screen space into the very same matrix. I wouldn't have called it even the core of a 3D engine.
    Same. I didn't bother with Z-buffering, though. I just depth-sorted my triangles.
    Reply
  • Sethius
    Totally agree with this. There was a time, obviously before this writer was around, where you just did all this math programming because there was no such thing as a graphics/game engine. Kudos that they assembled a bunch of parts and got it working but hardly something to write home about. What's next? Person is discovered that can answer math questions without a calculator?
    Reply
  • Peter Cockerell
    GPU. You keep using that word. I do not think it means what you think it means.
    Reply
  • AkroZ
    Since when making a 3D application with OpenGL becomes a rarity ? His project is more on using motion tracking than 3D rendering. They are some people coding rasterisation or ray tracing libraries, we don't speak much of it because it is not so hard to do.
    On FuryGPU he make the hardware, created a Windows driver, and a rendering library, and modified Doom to use his own rendering library.
    It is to be noted that the original Doom do not use the GPU, it has his own rendering engine for pseudo 3D (based on a BSP tree, similar to ray tracing) and is able to run on a 25 Mhz CPU.
    Reply