Fahrenheit (graphics API)

Last updated

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.

Contents

Direct3D and OpenGL are low-level APIs that concentrate primarily on the rendering steps of the 3D rendering pipeline. Programs that use these APIs have to supply a considerable amount of code to handle the rest of the pipeline. Fahrenheit hoped to provide a single API that would do most of this work, and then call either Direct3D or OpenGL for the last steps.

Much of the original Fahrenheit project was abandoned, and Microsoft and SGI eventually gave up on attempts to work together. In the end, only the scene graph portion of the Fahrenheit system, known as XSG, saw a release and was discontinued shortly afterwards.

History

Background

In the 1990s SGI's OpenGL was the de facto standard for 3D computer graphics. Prior to the mid-90s different platforms had used various custom solutions, but SGI's power in the graphics market, combined with the efforts of the OpenGL Architecture Review Board (ARB), led to the rapid standardization of OpenGL across the majority of the graphics workstation market. In the mid-1990s, Microsoft licensed OpenGL for their Windows NT operating system as its primary 3D system; Microsoft was positioning NT as a workstation-class system, and OpenGL was required in order to be a real competitor in this space. Initial support was released in Windows NT Workstation version 3.5 in 1994. [1]

Confusing matters was Microsoft's February 1995 purchase of RenderMorphics. [2] Their Reality Lab product was a 3D library written specifically for gaming purposes, aimed primarily at the "low end" market. After renaming it to Direct3D 3.0, Microsoft released it as the primary 3D API for Windows 95 and game programming. This sparked off a massive debate, both within Microsoft and outside, about the merits of the two APIs and whether or not Direct3D should be promoted. [3] [4] [5]

Through the mid-90s SGI had been working on a series of efforts to provide a higher level API on top of OpenGL to make programming easier. By 1997 this had evolved into their OpenGL++ system, a retained-mode C++ API on top of OpenGL. They proposed that a modified version be used as a single API on top of either OpenGL or a new high-performance low-level API that Microsoft was known to be working on (not based on Reality Lab). This would not only hide the implementation details and make the OpenGL/DirectX war superfluous, but at the same time offer considerably better high-level interfaces for a more robust object oriented development environment.

The OpenGL++ effort dragged on in the ARB through 1997. Although SGI committed resources to the project in order to provide a sample implementation, it appears they were unhappy with progress overall and complained "There's been lots of work, but relatively little communication." [6] Microsoft in particular had stated in no uncertain terms that they would not be supporting the effort, and SGI felt that their support would be essential for any efforts moving forward.

Announcement

A joint press release in December 1997, [7] followed by an announcement at an ARB meeting in early 1998 by SGI, [8] announced that work on OpenGL++ had been abandoned and SGI had partnered with Microsoft to produce a new system code-named "Fahrenheit". SGI was to provide the primary "mid-sized" API used in most applications, Fahrenheit Scene Graph, [9] as well as a modified version for handling very large models from CAD applications, Fahrenheit Large Model. Microsoft would provide a new low-level rendering engine for Windows known as Fahrenheit Low Level, essentially a replacement for the Reality Lab-based version of Direct3D. [10] The project was officially announced at SIGGRAPH 1998 for release in late 1999 or early 2000. [11]

Fahrenheit became the primary focus of development at SGI. Their MIPS-based workstations were quickly losing the performance lead they had in the early 1990s, and the company was in serious trouble as the average PC slowly but surely encroached on the high-end graphics market. SGI saw Fahrenheit as an exit strategy; once complete they would be able to move to a PC-based lineup while still offering the best development tools for a now universal API. Although no porting work began, toolkits like Open Inventor and OpenGL Performer were intended in future to be layered on Fahrenheit, meaning that they could deliver a single fully functional development system for Fahrenheit when it shipped, supporting both their existing customers as well as new ones. [10]

Cancellation

By 1999 it was clear that Microsoft had no intention of delivering Low Level; although officially working on it, almost no resources were dedicated to actually producing code. [11] At the same time Microsoft was in the process of massively investing in DirectX 7.0 (similar to 3.0 largely in name only). Without Low Level, Fahrenheit couldn't be delivered on Windows, and the project stalled. Eventually SGI abandoned work on Fahrenheit [12] and started planning other Scene Graph products which became the last in a series of such projects.

By 2000 DirectX 7.0 was in the marketplace, and proving quite popular. DirectX had become the primary API during the rise of 3D gaming in the late 1990s. Microsoft did release Fahrenheit Scene Graph as XSG the same year, but did so with a note saying it would not be supported. No new versions of XSG were ever released, and all of the pages related to either Fahrenheit or XSG on both the Microsoft and SGI web pages have since disappeared. Hardware accelerated OpenGL support was dropped from the included video drivers in Windows XP, although most video card manufacturers deliver their own implementations.

Description

As compared to Open Inventor or Iris Performer, the design of the XSG included some novel ideas. The composition primitives and traversal methods allowed applications to construct scenes in a manner best suited to the structure of the data being visualized, but then to apply a scene graph optimizer to restructure the scene for more efficient rendering without changing the scene's appearance. The developer simply did whatever seemed natural, and the system made it work quickly.

Pipelined rendering allowed a multithreaded application to construct the scene, cull its primitives, and render it in different threads (borrowing from the Performer app-cull-draw pipeline). The representation of primitive scene data was optimized to minimize the amount of data stored so as to avoid completely duplicating it on a thread-by-thread basis.

One of the unique features of XSG was the ability to replace most of the built-in methods for walking the graph with your own versions. Developers could write new functions for quickly traversing their known methods of storing data inside XSG, and then chain them into existing rendering paths.

David Blythe, the primary architect of Fahrenheit at SGI, worked at Microsoft on DirectX until 2010. He was also Chief Graphics Software Architect at Intel.

See also

Related Research Articles

<span class="mw-page-title-main">DirectX</span> Collection of multimedia related APIs on Microsoft platforms

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", such as Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, and so forth. The name DirectX was coined as a shorthand term for all of these APIs and soon became the name of the collection. When Microsoft later set out to develop a gaming console, the X was used as the basis of the name Xbox to indicate that the console was based on DirectX technology. The X initial has been carried forward in the naming of APIs designed for the Xbox such as XInput and the Cross-platform Audio Creation Tool (XACT), while the DirectX pattern has been continued for Windows APIs such as Direct2D and DirectWrite.

<span class="mw-page-title-main">OpenGL</span> 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.

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.

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.

OpenGL++ was a graphics library written in C++ that supported object-oriented data structures on top of the OpenGL 3D graphics system. The project started as the result of a partnership between SGI, IBM and Intel, and later, Digital Equipment Corporation. It was intended to provide a higher level API than the "bare metal" support of OpenGL, as well as being an implementation for Java3D. Work on OpenGL++ ended when SGI decided to partner with Microsoft instead, leading to the Fahrenheit project, which also died.

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 Inventor exists as both proprietary software and free and open-source software, subject to the requirements of the GNU Lesser General Public License (LGPL), version 2.1.

<span class="mw-page-title-main">QuickDraw 3D</span> 3D graphics API developed by Apple Inc.

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.

Game programming, a subset of game development, is the software development of video games. Game programming requires substantial skill in software engineering and computer programming in a given language, as well as specialization in one or more of the following areas: simulation, computer graphics, artificial intelligence, physics, audio programming, and input. For multiplayer games, knowledge of network programming is required. In some genres, e.g. fighting games, advanced network programming is often demanded, as the netcode and its properties are considered by players and critics to be some of the most important metrics of the game's quality. For massively multiplayer online games (MMOGs), even further knowledge of database programming and advanced networking programming are required. Though often engaged in by professional game programmers, there is a thriving scene of independent developers who lack a relationship with a publishing company.

Direct3D and OpenGL are both application programming interfaces (APIs) that 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 backwards 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.

PHIGS 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.

<span class="mw-page-title-main">Java 3D</span> Java 3D graphics API

Java 3D is a scene graph-based 3D application programming interface (API) for the Java platform. It runs on top of either OpenGL or Direct3D until version 1.6.0, which runs on top of Java OpenGL (JOGL). Since version 1.2, Java 3D has been developed under the Java Community Process. A Java 3D scene graph is a directed acyclic graph (DAG).

<span class="mw-page-title-main">Shader</span> Type of program in a graphical processing unit (GPU)

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 specialized functions in computer graphics special effects and video post-processing, as well as general-purpose computing on graphics processing units.

<span class="mw-page-title-main">Mark Kilgard</span> American computer programmer

Mark J. Kilgard is a graphics software engineer working at Nvidia.

A shading language is a graphics programming language adapted to programming shader effects. Shading languages usually consist of special data types like "vector", "matrix", "color" and "normal".

<span class="mw-page-title-main">OpenGL Shading Language</span> High-level shading language

OpenGL Shading Language (GLSL) is a high-level shading language with a syntax based on the C programming language. It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use ARB assembly language or hardware-specific languages.

IrisVision is an expansion card developed by Silicon Graphics for IBM compatible PCs in 1991 and is one of the first 3D accelerator cards available for the high end PC market. IrisVision is an adaptation of the graphics pipeline from the Personal IRIS workstation to the Micro Channel architecture and consumer ISA buses of most modern PCs of the day. It has the first variant of IRIS GL ported to the PC, predating OpenGL.

<span class="mw-page-title-main">WebGL</span> JavaScript bindings for OpenGL in web browsers

WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.

This is a glossary of terms relating to computer graphics.

References

  1. PC Magazine, December 20, 1994
  2. "RenderMorphics and Reality Lab History". Qube Software. Archived from the original on 2008-12-23. Retrieved 2009-01-25.
  3. Thurrott, Paul (July 16, 1997). "Open GL vs. Direct3D: the debate continue". Windows IT Pro. Archived from the original on February 5, 2010. Retrieved 2009-01-25.
  4. Thurrott, Paul (July 21, 1997). "Direct3D vs. OpenGL continues: id and Alex St. John strike back". Windows IT Pro. Archived from the original on February 5, 2010. Retrieved 2009-01-25.
  5. Microsoft and 3D Graphics: A Case Study in Suppressing Innovation and Competition Archived October 23, 2007, at the Wayback Machine
  6. "OpenGL ++ ARB Interest Subcommittee Meeting Notes". OpenGL. June 6, 1997. Retrieved 2009-01-25.
  7. "Silicon Graphics and Microsoft Form Strategic Alliance To Define the Future of Graphics". MOUNTAIN VIEW, Calif.: Microsoft. 1997-12-17. Archived from the original on 2009-01-22. Retrieved 2009-01-25.
  8. Leech, Jon (March 9–10, 1998). "ARB Meeting Notes". Salt Lake City, UT: OpenGL. Retrieved 2009-01-25.
  9. Dana, Jenny (September 1998). "APIs of the Fahrenheit Initiative". Silicon Valley. SIGGRAPH. Archived from the original on 2007-08-07. Retrieved 2009-01-25.
  10. 1 2 Fahrenheit FAQ, Wayback Machine's archive of SGI's FAQ
  11. 1 2 "What is/was Fahrenheit?". DirectX.com. Archived from the original on 2008-04-21. Retrieved 2009-01-25.
  12. "HP Readies Fahrenheit Graphics Engines". Computergram International. 1999-10-19. Retrieved 2009-01-25.