Fixed-function (computer graphics)
This article needs additional citations for verification. (February 2023) |
In computer graphics, fixed-function is a term primarily used to describe 3D graphics APIs and GPUs designed prior to the advent of programmable shaders. The term is also used to describe APIs and graphics pipelines that do not allow users to change its underlying processing techniques, hence the word 'fixed'. Fixed-function can also refer to graphics processing techniques that employ non-programmable dedicated hardware, like the use of ROPs to rasterize an image.[citation needed]
History
Although the exact origin of the term 'fixed-function' is unclear, the first known graphics hardware that is considered to be fixed-function was the IBM 8514/A graphics add-in-board from 1987. When compared to other graphics hardware of its time, particularly hardware that made use of the RISC-based TMS34010, the 8514/A had similar processing speeds while also being significantly less expensive. However, those benefits came at a cost of programming flexibility, as the 8514/A was less programmable than its competition.[1]
From the 1980s to the 1990s, the most powerful dedicated graphics hardware had pipelines that were not fully programmable, only configurable to a limited degree. This meant that CPU had no direct influence on how the GPU processes vertex and rasterization operations, beyond issuing commands and transferring data back and forth.[2]
Historically fixed-function APIs consisted of a set of function entry points that would approximately or directly map to dedicated logic for their named purpose in GPUs designed to support them. As shader based GPUs and APIs evolved, fixed-function APIs were implemented by graphics driver engineers using the more general purpose shading architecture. This approach served as a segue that would continue providing the fixed-function API abstraction most developers were experienced with while allowing further development and enhancements of the newer shader-based architectures.
OpenGL, OpenGL ES and DirectX (Direct3D) are all 3D graphics APIs that went through the transition from the fixed-function programming model to the shader-based programming model.[3] Below is a table of when the transition from fixed-function to shaders was made:
3D API | Last Fixed-function Version | First Shader Version |
---|---|---|
OpenGL | v1.5 | v2.0 |
OpenGL ES | v1.1 | v2.0 |
DirectX | v7.0 | v8.0 |
Even after the popularization of programmable shaders and graphics pipelines, certain GPU features would remain non-programmable and relegated for design purposes. For example, the NVIDIA GeForce 6 series GPUs delegated early culling, rasterization, MSAA, depth queries, texture mapping and more to fixed-function implementations.[4]
Fixed function vs shaders
Fixed function APIs tend to be a simpler programming abstraction with a series of well-defined and specifically named graphics pipeline stages. Shader-based APIs treat graphics data (vertices and pixels / texels) generically and allow a great deal of flexibility in how this data is modulated. More sophisticated rendering techniques are possible using a shader-based API.
References
- ^ Peddie, Dr. Jon. "Famous Graphics Chips: IBM's professional graphics, the PGC and 8514/A". IEEE Computer Society.
- ^ Kirk, David B.; Hwu, Wen-mei W. (February 22, 2010). Programming Massively Parallel Processors (1st ed.). Morgan Kaufmann Publishers. ISBN 978-0123814739.
{{cite book}}
: CS1 maint: date and year (link) - ^ Kirk, David; Hwu, Wen-mei (2013). "Chapter 2 - History of GPU Computing". Programming Massively Parallel Processors: A Hands-on Approach. Elsevier/Morgan Kaufmann. pp. 23–39. ISBN 978-93-5107-044-3.
- ^ Kilgariff, Emmett; Fernando, Randima; Pharr, Matt (January 1, 2005). GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation. Addison-Wesley. ISBN 0-321-33559-7.
{{cite book}}
: CS1 maint: date and year (link)