3DFX was the first stock I ever bought. Literally the first stock. I was a young game engine programmer and I thought I was picking something that other people didn't know about.
I was so wrong. It taught me humility in investing and a respect for all the other things (outside engineering and product) that are necessary for the success of a business (like distribution and manufacturing).
The Elsa video card I had went as far as including a pair of shutter glasses to show off the 3D graphics it could process. It was a fun gimmick for a short period of time but it turned out most "3d" games were meant to be viewed in 2d so sometimes you'd end up with weird scenes where most of the objects had depth but there would be floating bitmaps here and there. That worked fine for a 2d projection but was laughable for 3d. Also, everything ended up looking like a bunch of miniatures in a diorama because CRT screens were nowhere near large enough to fill one's field of view, plus being boxy, just reinforced the middle school diorama feel. Still, fun for a couple of days.
>Before the GPU adds an entry to the raster of pixel colors, it compares the distance of that pixel from the camera with the number in that location in the Z-buffer. If the current distance is less than the one already found there, it knows that the pixel in question should be overwritten in the main raster and that the Z-buffer raster should be updated with that pixel’s new distance from the camera. Ditto if the Z-buffer contains a null value, indicating no object has yet been drawn at that pixel. But if the current distance is larger than the (non-null) number already found there, the GPU simply moves on without doing anything more
Surprisingly not the way 3dfx works. Voodoo 1/2 (no idea about V3, but I wouldnt be surprised) will calculate, texture and gourad shade every single triangle being pushed thru it and only then in the last step decide if it passes Z-buffer/alpha test or not. There is no speed difference between drawing 1000 triangles in random order vs sorted front to back. Speed difference when turning off Z-buffering/alpha is minimal, you only skip the logic deciding between storing or skipping write to framebuffer.
There was so much easy optimization left on the floor when first 3dfx cards were being designed!
My favorite obligatory 3dfx fall/Nvidia killer mode timeline:
Interestingly, the way nVidia achieved this is that they were one of the first successful users of RTL simulation. They would design their chips to work in simulation, and then instantly order a full production batch without any physical test articles. This was thought to be entirely insane at the time.
The reason they did this, was that for the first few generations of their chips, the company was constantly near bankruptcy and they simply could not afford the payroll for the time it would take to get test samples out and debugged. So they just placed their trust in an unproved technology and prayed. If the simulations would have failed and anything before GeForce had bugs you couldn't work around in drivers (and they all had a lot of bugs), the company would have likely gone under.
I was so wrong. It taught me humility in investing and a respect for all the other things (outside engineering and product) that are necessary for the success of a business (like distribution and manufacturing).