PHIGS

Last updated
Programmer's Hierarchical Interactive Graphics System
StatusPublished
Year started1988;33 years ago (1988)
Latest versionISO/IEC 9592 and ISO/IEC 9593
1997 (1997) and 1990 (1990)/1991 (1991)
Organization ANSI, FIPS, ISO, IEC
Related standardsANSI X3.144-1988, FIPS 153
Domain 3D computer graphics application programming interface
AbbreviationPHIGS

PHIGS (Programmer's Hierarchical Interactive Graphics System) is an application programming interface (API) standard for rendering 3D 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 of OpenGL, which became the most popular professional 3D API of the mid to late 1990s.

Contents

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 the X Window System, supported via PEX. [lower-alpha 1] 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 the Graphical Kernel System (GKS) of the late 1970s, and became a standard by 1988: ANSI (ANSI X3.144-1988), FIPS (FIPS 153) and then ISO (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 basic Gouraud, "Dot", and Phong shading for rendering 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 (notably texture mapping), nor were many machines of the era physically capable of optimizing it to perform in real time.

Technical details

The word "hierarchical" in the name refers to a notable feature of PHIGS: unlike most graphics systems, PHIGS included a scene 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 drawing primitives and their attributes (color, line style, etc.). CSSes could be shared among a number of virtual devices, known under PHIGS as workstations, each of which could contain any number of views.

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 by PHIGS+. 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 as Non-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).

The rise of OpenGL and the decline of PHIGS

OpenGL, unlike PHIGS, was an immediate-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 the CPU-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 from XFree86 4.2.x (2002) and finally removed from the X Window System altogether in X11R6.7.0 (April 2004). [1]

Standards

ISO

See also

Notes

  1. PEX was originally known as the "PHIGS Extension to X"; subsequently referred to as "X3d", whose letters form a rotational variant on the letters "P-E-X"

Related Research Articles

OpenGL Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

The RenderMan Interface Specification, or RISpec in short, is an open API developed by Pixar Animation Studios to describe three-dimensional scenes and turn them into digital photorealistic images. It includes the RenderMan Shading Language.

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 acceleration if it is available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z-buffering, W-buffering, stencil buffering, spatial anti-aliasing, alpha blending, color blending, mipmapping, texture blending, clipping, culling, atmospheric effects, perspective-correct texture mapping, programmable HLSL shaders, and effects. Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties.

VRML File format for representing 3D interactive vector graphics

VRML is a standard file format for representing 3-dimensional (3D) interactive vector graphics, designed particularly with the World Wide Web in mind. It has been superseded by X3D.

Scene graph

A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games, which arranges the logical and often spatial representation of a graphical scene. It is a collection of nodes in a graph or tree structure. A tree node may have many children but only a single parent, with the effect of a parent applied to all its child nodes; an operation performed on a group automatically propagates its effect to all of its members. In many programs, associating a geometrical transformation matrix at each group level and concatenating such matrices together is an efficient and natural way to process such operations. A common feature, for instance, is the ability to group related shapes and objects into a compound object that can then be manipulated as easily as a single object.

Fahrenheit was an effort to create a unified high-level API for 3D computer graphics to unify Direct3D and OpenGL. It was designed primarily by Microsoft and SGI and also included work from an HP-MS joint effort.

X3D is a royalty-free ISO/IEC standard for declaratively representing 3D computer graphics. File format support includes XML, ClassicVRML, Compressed Binary Encoding (CBE) and a draft JSON encoding. X3D became the successor to the Virtual Reality Modeling Language (VRML) in 2001. X3D features extensions to VRML, the ability to encode the scene using an XML syntax as well as the Open Inventor-like syntax of VRML97, or binary formatting, and enhanced application programming interfaces (APIs).

OpenGL Performer, formerly known as IRIS Performer and commonly referred to simply as Performer, is a commercial library of utility code built on top of OpenGL for the purpose of enabling hard real-time visual simulation applications. OpenGL Performer was developed by SGI which continues to maintain and enhance it. OpenGL Performer is available for IRIX, Linux, and several versions of Microsoft Windows. Both ANSI C and C++ bindings are available.

The Graphical Kernel System (GKS) was the first ISO standard for low-level computer graphics, introduced in 1977. A draft international standard was circulated for review in September 1983. Final ratification of the standard was achieved in 1985.

Computer Graphics Metafile (CGM) is a free and open international standard file format for 2D vector graphics, raster graphics, and text, and is defined by ISO/IEC 8632.

QuickDraw 3D

QuickDraw 3D, or QD3D for short, is a 3D graphics API developed by Apple Inc. starting in 1995, originally for their Macintosh computers, but delivered as a cross-platform system.

GLX is an extension to the X Window System core protocol providing an interface between OpenGL and the X Window System as well as extensions to OpenGL itself. It enables programs wishing to use OpenGL to do so within a window provided by the X Window System. GLX distinguishes two "states": indirect state and direct state.

Direct3D and OpenGL are competing application programming interfaces (APIs) which can be used in applications to render 2D and 3D computer graphics. As of 2005, graphics processing units (GPUs) almost always implement one version of both of these APIs. Examples include: DirectX 9 and OpenGL 2 circa 2004; DirectX 10 and OpenGL 3 circa 2008; and most recently, DirectX 11 and OpenGL 4 circa 2011. GPUs that support more recent versions of the standards are backward compatible with applications that use the older standards; for example, one can run older DirectX 9 games on a more recent DirectX 11-certified GPU.

Software rendering

Software rendering is the process of generating an image from a model by means of computer software. In the context of computer graphics rendering, software rendering refers to a rendering process that is not dependent upon graphics hardware ASICs, such as a graphics card. The rendering takes place entirely in the CPU. Rendering everything with the (general-purpose) CPU has the main advantage that it is not restricted to the (limited) capabilities of graphics hardware, but the disadvantage that more semiconductors are needed to obtain the same speed.

Retained mode in computer graphics is a major pattern of API design in graphics libraries, in which

Core OpenGL, or CGL, is Apple Inc.'s Macintosh Quartz windowing system interface to the OS X implementation of the OpenGL specification. CGL is analogous to GLX, which is the X11 interface to OpenGL, as well as WGL, which is the Microsoft Windows interface to OpenGL.

A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and running on the CPU, common in embedded systems, or being hardware accelerated by a GPU, more common in PCs. By employing these functions, a program can assemble an image to be output to a monitor. This relieves the programmer of the task of creating and optimizing these functions, and allows them to focus on building the graphics program. Graphics libraries are mainly used in video games and simulations.

Xsgi is the X Window System (X11) server for the IRIX-based graphical workstations and servers from Silicon Graphics (SGI). Xsgi was released in 1991 with IRIX 4.0 on the SGI Indigo workstation.

IrisVision was an expansion card developed by Silicon Graphics for IBM compatible PCs in 1991 and was one of the first 3D accelerator cards available for the high-end PC market. IrisVision was actually an adaptation of the graphics pipeline found in the Personal IRIS workstation to the Micro Channel architecture and consumer ISA buses found on most modern PCs of the day. It is also notable for being the first time that any variant of IRIS GL was ever ported to the PC.

ISO/IEC JTC 1/SC 24 Computer graphics, image processing and environmental data representation is a standardization subcommittee of the joint subcommittee ISO/IEC JTC 1 of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), which develops and facilitates standards within the field of computer graphics, image processing, and environmental data representation. The international secretariat of ISO/IEC JTC 1/SC 24 is the British Standards Institute (BSI) located in the United Kingdom.

References

  1. "X.Org Foundation releases X Window System X11R6.7".
  2. "ISO/IEC 9592-1:1997". ISO. Retrieved 2017-10-14.
  3. "ISO/IEC 9592-2:1997". ISO. Retrieved 2017-10-14.
  4. "ISO/IEC 9593-1:1997". ISO. Retrieved 2017-10-14.
  5. "ISO/IEC 9593-1:1990". ISO. Retrieved 2017-10-14.
  6. "ISO/IEC 9593-3:1990". ISO. Retrieved 2017-10-14.
  7. "ISO/IEC 9593-4:1991". ISO. Retrieved 2017-10-14.