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

This reads like the article author has never heard of software 3D-renderers before 😛 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.
 
Last edited:
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.

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.
 
  • Like
Reactions: NinoPino
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!
 
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.
 
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?
 
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.
 
  • Like
Reactions: bit_user
On FuryGPU he make the hardware, created a Windows driver, and a rendering library, and modified Doom Quake to use his own rendering library.
Quake shipped as a CPU-only game, but there was later an OpenGL-accelerated version of it.

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.
BSP trees are used by rasterizers for culling hidden objects. In ray tracing, they're one type of hierarchical datastructure you can use to reduce the number of ray intersection tests needed.

BTW, I first played it on such a machine, and you couldn't get quite a high enough frame rate to use the maximum size viewport. Also, I would point out that it used little or no floating-point arithmetic, since 386 and 486SX CPUs didn't have them. Quake was a different story, though.