OpenGL Performer, formerly known as IRIS Performer and commonly referred to simply as Performer, is an application development environment.
It is a commercial library of utility code
built on top of
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 ...
for the purpose of enabling
hard real-time
Real-time computing (RTC) is the computer science term for hardware and software systems subject to a "real-time constraint", for example from event to system response. Real-time programs must guarantee response within specified time constrai ...
visual simulation applications. OpenGL Performer was developed by
SGI. OpenGL Performer is available for
IRIX
IRIX (, ) is a discontinued operating system developed by Silicon Graphics (SGI) to run on the company's proprietary MIPS architecture, MIPS workstations and servers. It is based on UNIX System V with Berkeley Software Distribution, BSD extensio ...
,
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, and several versions of
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
. Both
ANSI C
ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and the ...
and
C++
C++ (, pronounced "C plus plus" and sometimes abbreviated as CPP or CXX) is a high-level, general-purpose programming language created by Danish computer scientist Bjarne Stroustrup. First released in 1985 as an extension of the C programmin ...
bindings are available.
History
Performer came about in 1991 when a group from SGI's
Open Inventor
Open Inventor, originally IRIS Inventor, is a C++ object-oriented retained mode 3D graphics toolkit designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency. Open Inve ...
project, then known as IRIS Inventor, decided to focus on performance rather than ease of programmability. Whereas Inventor delivered easy-to-use objects and various UI elements to interact with them, Performer focused on a
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 g ...
system that could be re-arranged on the fly for performance reasons, allowing the various passes of a rendering task to be performed in parallel in multiple
threads. Performer allowed the scene to describe levels of detail with hysteresis bands and fade capabilities. Frame rate and statistics were monitored and a 'stress' factor was calculated. This could be used to further weight the level of detail in the scene eliminating detail to maintain a target frame rate.
Other key features of Performer were the use of
symmetric multi-processing
Symmetric multiprocessing or shared-memory multiprocessing (SMP) involves a multiprocessor computer hardware and software architecture where two or more identical processors are connected to a single, shared main memory, have full access to all ...
capabilities, support multiple graphics pipes and the ability to utilize the scalable resources of high end systems. In this regard Performer was actually simple to use given the underlying complexity. Application culling and rendering could be running in different threads locked to different physical processors. In a multi-pipe (multiple graphics subsystems) configuration rendering to each graphics pipe would have a dedicated thread and similarly culling would also have a dedicated processor. Advanced features like database paging, texture paging and point light source management (for flight simulation) and
intersection testing for
collision detection
Collision detection is the computational problem of detecting an intersection of two or more objects in virtual space. More precisely, it deals with the questions of ''if'', ''when'' and ''where'' two or more objects intersect. Collision detect ...
would also have dedicated processors allowing
asynchronous I/O
In computer science, asynchronous I/O (also non-sequential I/O) is a form of input/output processing that permits other processing to continue before the I/O operation has finished. A name used for asynchronous I/O in the Windows API is '' over ...
and processing to occur without negatively impacting graphics performance. Most of this complexity was hidden beneath a simpler scene graph API with relatively high level configuration calls which could be made to set up the threads and inter-process communication.
Performer did not have a native file format, merely plugin loaders from 3rd parties such as
MultiGen's OpenFlight
OpenFlight (or .flt) is a 3d geometry model file format originally developed by Software Systems Inc. for its MultiGen real-time 3d modeling package in 1988. Originally called Flight, the format was designed as a nonproprietary 3d model format f ...
format loader. Similarly there was no default runtime, there was sample code and the often used and often modified 'perfly' sample application. This probably contributed to its reputation for being difficult to use.
By the mid-1990s it started to become clear that there was no reason that Inventor and Performer could not be combined. This led to the
Cosmo 3D project that SGI was intending to build both Inventor and Performer (now essentially
API shim
In computer programming, a shim is a library (computer science), library that Transparency_(human–computer_interaction), transparently intercepts Application programming interface, API calls and changes the arguments passed, handles the ...
s) out of, as well as promote as a new and higher-level standardized API for future work on the SGI platform. However, after the first beta release of Cosmo 3D, SGI joined with
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, and Delaware General Corporation Law, incorporated in Delaware. Intel designs, manufactures, and sells computer compo ...
and
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
(and later
DEC) to create
OpenGL++, essentially a cleaned up version of Cosmo. This project died when SGI turned their attention to an almost identical project with
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
known as
Fahrenheit
The Fahrenheit scale () is a scale of temperature, temperature scale based on one proposed in 1724 by the German-Polish physicist Daniel Gabriel Fahrenheit (1686–1736). It uses the degree Fahrenheit (symbol: °F) as the unit. Several accou ...
, which was also killed. Today Inventor and Performer remain separate products, and none of the combined versions ever saw the light of day.
Features
Performer consists primarily of two libraries: the lower-level ''libpr'' and the higher-level ''libpf.'' The ''libpr'' library provides an object-oriented interface to high-speed rendering functions based on the concept of a ''pfGeoSet'' and a ''pfGeoState''. A ''pfGeoSet'' is a collection of graphics primitives, such as polygons or lines. A ''pfGeoState'' encapsulates properties pertaining to a given pfGeoSet such as lighting, transparency, and texturing.
The ''libpf'' library includes functions for the generation and manipulation of hierarchical scene graphs, scene processing (simulation, intersection, culling, and drawing tasks), level-of-detail management, asynchronous database paging, dynamic coordinate systems, environment models, light points, and so on. This library also provides transparent support for multiple viewports spread across multiple graphics pipelines.
Other Performer libraries--''libpfutil, libpfdb, libpfui,'' etc.--provide functions for generating optimized geometry, database conversion, device input (such as for interfacing with external
flyboxes and
MIL-STD-1553
MIL-STD-1553 is a military standard published by the United States Department of Defense that defines the mechanical, electrical, and functional characteristics of a serial data bus. It was originally designed as an avionic data bus for use w ...
mux busses), motion models, collision models, and a format-independent database interface that supports common data formats such as
Open Inventor
Open Inventor, originally IRIS Inventor, is a C++ object-oriented retained mode 3D graphics toolkit designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency. Open Inve ...
,
OpenFlight
OpenFlight (or .flt) is a 3d geometry model file format originally developed by Software Systems Inc. for its MultiGen real-time 3d modeling package in 1988. Originally called Flight, the format was designed as a nonproprietary 3d model format f ...
,
Designer's Workbench,
Medit, and
Wavefront .obj file.
References
{{reflist
External links
OpenGL Performerproduct page
OpenGL Performer Getting Started GuideOpenGL Performer Programmers GuideOpenGL Performersample code
3D scenegraph APIs
OpenGL