In
computer graphics
Computer graphics deals with generating images and art with the aid of computers. Computer graphics is a core technology in digital photography, film, video games, digital art, cell phone and computer displays, and many specialized applications. ...
, fixed-function is a term primarily used to describe 3D graphics
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s 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
In computer graphics, rasterisation (British English) or rasterization (American English) is the task of taking an image described in a vector graphics format (shapes) and converting it into a raster image (a series of pixels, dots or lines, whic ...
an image.
History
Although the exact origin of the term 'fixed-function' is unclear, the first known graphics hardware that is considered to be fixed-function is 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
In electronics and computer science, a reduced instruction set computer (RISC) is a computer architecture designed to simplify the individual instructions given to the computer to accomplish tasks. Compared to the instructions given to a comp ...
-based
TMS34010
The TMS34010, developed by Texas Instruments and released in 1986, was the first programmable graphics processor integrated circuit. While specialized graphics hardware existed earlier, such as blitters, the TMS34010 chip is a microprocessor ...
, the 8514/A has similar processing speeds while also launching at a significantly less expensive price point. However, those benefits came at a cost of programming flexibility, as the 8514/A was designed more like an
ASIC
An application-specific integrated circuit (ASIC ) is an integrated circuit (IC) chip customized for a particular use, rather than intended for general-purpose use, such as a chip designed to run in a digital voice recorder or a high-efficien ...
than its competition that were similar to general-purpose
CPUs
A central processing unit (CPU), also called a central processor, main processor, or just processor, is the primary Processor (computing), processor in a given computer. Its electronic circuitry executes Instruction (computing), instructions ...
.
Following the 8514/A, the most powerful dedicated graphics hardware of the 1990s have pipelines that are not programmable, only configurable to a limited degree. This means that host CPUs have no direct influence on how its GPUs will process vertex and rasterization operations, beyond issuing indirect commands and transferring data bidirectionally from CPU-sided
RAM
Ram, ram, or RAM most commonly refers to:
* A male sheep
* Random-access memory, computer memory
* Ram Trucks, US, since 2009
** List of vehicles named Dodge Ram, trucks and vans
** Ram Pickup, produced by Ram Trucks
Ram, ram, or RAM may also ref ...
to GPU-sided
VRAM
Video random-access memory (VRAM) is dedicated computer memory used to store the pixels and other graphics data as a framebuffer to be rendered on a computer monitor. It often uses a different technology than other computer memory, in order to ...
. As more hardware with this fixed-function design released, 3D graphics API developers of the 90s mimicked the nature of available hardware in their own software design by creating logical graphics pipelines that are only configurable and non-programmable. Graphics APIs of this time, notably
OpenGL
OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
and early versions
DirectX
Microsoft DirectX is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with "Direct" ...
(
Direct3D
Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware ...
), are themselves retroactively referred to as fixed-function as they ultimately share many design characteristics with the fixed-function hardware they targeted.
Historically fixed-function
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s 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
In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene—a process known as '' shading''. Shaders have evolved to perform a variety of s ...
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
OpenGL for Embedded Systems (OpenGL ES or GLES) is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accelerate ...
and DirectX are all 3D graphics APIs that went through the transition from the fixed-function programming model to the shader-based programming model. Below is a table of when the transition from fixed-function to shaders was made:
Even after the popularization of programmable shaders and graphics pipelines, certain GPU features would remain non-programmable to optimize for speed over flexibility. For example, the NVIDIA
GeForce 6 series GPUs delegated early culling, rasterization,
MSAA, depth queries, texture mapping and more to fixed-function implementations. The CPU does not direct the GPU how to specifically process these operations; these features can only be configured to a limited degree.
[{{Cite book , last=Kilgariff , first=Emmett , url=https://developer.nvidia.com/gpugems/gpugems2/part-iv-general-purpose-computation-gpus-primer/chapter-30-geforce-6-series-gpu , title=GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation , last2=Fernando , first2=Randima , last3=Pharr , first3=Matt , date=January 1, 2005 , publisher=]Addison-Wesley
Addison–Wesley is an American publisher of textbooks and computer literature. It is an imprint of Pearson plc, a global publishing and education company. In addition to publishing books, Addison–Wesley also distributes its technical titles ...
, year=2005 , isbn=0-321-33559-7
Fixed function vs shaders
Fixed function
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s tend to be a simpler programming abstraction with a series of well-defined and specifically named
graphics pipeline
The computer graphics pipeline, also known as the rendering pipeline, or graphics pipeline, is a framework within computer graphics that outlines the necessary procedures for transforming a three-dimensional (3D) scene into a two-dimensional (2 ...
stages. Shader-based APIs treat graphics data (vertices and
pixel
In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a Raster graphics, raster image, or the smallest addressable element in a dot matrix display device. In most digital display devices, p ...
s /
texels
In Computer graphics, computer graphics, a texel, texture element, or texture pixel is the fundamental unit of a texture maps, texture map. Textures are represented by Array (data structure), arrays of texels representing the texture space, just ...
) generically and allow a great deal of flexibility in how this data is modulated. More sophisticated rendering techniques are possible using a
shader
In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene—a process known as '' shading''. Shaders have evolved to perform a variety of s ...
-based API.
References
3D rendering