Brief History of Modern GPUs
摘要
There was a time, in the realm of real-time 3D graphics, where things were going in a slightly different way than what we are used to today. We didn’t even have hardware-accelerated graphics. Old, 3D-rendered graphics were pretty much coded in software. Every step that nowadays is performed by the graphics processing unit (GPU) was entirely implemented in C or, worse, in assembly. Geometry was still represented through vertices, and the 3D math-related arithmetic, vectors, and matrices were of course the same. The only difference was that, for example, all the modules that were meant to render and shade the geometry were a mixture of C routines for the screen space mesh projection, lines drawing, polygon filling, and software texture mapping, just to mention a few. Obviously, no hardware Z-buffer was present; therefore, there was something called the painter algorithm, which was sorting all the objects in a back-to-front fashion (much like a real painter does when paint on a canvas) before submitting them for rendering. In this way, proper sorting order was achieved, and the scene was rendered correctly. The technique of rendering objects in the 3D world was called rasterization. However, rasterization was not the only technique that was possible for rendering a 3D scene. There was another approach called ray tracing.