Abbreviation | PHIGS |
---|---|
Status | Published |
Year started | 1988; 37 years ago (1988) |
Latest version | ISO/IEC 9592 and ISO/IEC 9593 1997 (1997) and 1990 (1990)/1991 (1991) |
Organization | ANSI,FIPS,ISO,IEC |
Related standards | ANSI X3.144-1988, FIPS 153 |
Domain | 3D computer graphicsapplication programming interface |
PHIGS (Programmer's Hierarchical Interactive Graphics System) is anapplication programming interface (API) standard for rendering3D computer graphics, considered to be the 3D graphics standard for the 1980s through the early 1990s. Subsequently, a combination of features and power led to the rise ofOpenGL, which became the most popular professional 3D API of the mid to late 1990s.
Large vendors typically offered versions of PHIGS for their platforms, including DEC PHIGS, IBM's graPHIGS and Sun's SunPHIGS. It could also be used within theX Window System, supported viaPEX.[a] PEX consisted of an extension to X, adding commands that would be forwarded from the X server to the PEX system for rendering. Workstations were placed in windows typically, but could also be forwarded to take over the whole screen, or to various printer-output devices.
PHIGS was designed in the 1980s, inheriting many of its ideas from theGraphical Kernel System (GKS) of the late 1970s, and became a standard by 1988:ANSI (ANSI X3.144-1988),FIPS (FIPS 153) and thenISO (ISO/IEC 9592 and ISO/IEC 9593). Due to its early gestation, the standard supports only the most basic 3D graphics, including basic geometry and meshes, and only the basicGouraud, "Dot", andPhong shading forrendering scenes. Although PHIGS ultimately expanded to contain advanced functions (including the more accurate Phong lighting model and Data Mapping), other features considered standard by the mid-1990s were not supported (notablytexture mapping), nor were many machines of the era physically capable of optimizing it to perform in real time.
The word "hierarchical" in the name refers to a notable feature of PHIGS: unlike most graphics systems, PHIGS included ascene graph system as a part of the basic standard. Models were built up in a Centralized Structure Store (CSS), a database containing a "world" including both the drawingprimitives and theirattributes (color, line style, etc.). CSSes could be shared among a number of virtual devices, known under PHIGS asworkstations, each of which could contain any number ofviews.
Displaying graphics on the screen in PHIGS was a three-step process; first the model would be built into a CSS, then a workstation would be created and opened, and finally the model would be connected to the workstation. At that point the workstation would immediately render the model, and any future changes made to the model would instantly be reflected in all applicable workstation views.
PHIGS originally lacked the capability to render illuminated scenes, and was superseded byPHIGS+. PHIGS+ works in essentially the same manner, but added methods for lighting and filling surfaces within a 3D scene. PHIGS+ also introduced more advanced graphics primitives, such asNon-uniform rational B-spline (NURBS) surfaces. An ad hoc ANSI committee was formed around these proposed extensions to PHIGS, changing its name to the more descriptive and (optimistically) extensible name "PHIGS PLUS" -- "PLUS" being a slightly tongue-in-cheek acronym for "Plus Lumière Und Surfaces" (the two major areas of advancement over the base PHIGS standard).
OpenGL, unlike PHIGS, was animmediate-mode rendering system with no "state"; once an object is sent to a view to be rendered it essentially disappears. Changes to the model had to be re-sent into the system and re-rendered, a dramatically different programming mindset. For simple projects, PHIGS was considerably easier to use and work with.
However, OpenGL's "low-level" API allowed the programmer to make dramatic improvements in rendering performance by first examining the data on theCPU-side before trying to send it over the bus to the graphics engine. For instance, the programmer could "cull" the objects by examining which objects were actually visible in the scene, and sending only those objects that would actually end up on the screen. This was kept private in PHIGS, making it much more difficult to tune performance, but enabling tuning to happen "for free" within the PHIGS implementation.
Given the low performance systems of the era and the need for high-performance rendering, OpenGL was generally considered to be much more "powerful" for 3D programming. PHIGS fell into disuse. Version 6.0 of the PEX protocol was designed to support other 3D programming models as well, but did not regain popularity. PEX was mostly removed fromXFree86 4.2.x (2002) and finally removed from the X Window System altogether in X11R6.7.0 (April 2004).[1]