Friday, July 27, 2007

Faster Graphics on the Way Via An Updated OpenGL (01mar97)

March 1, 1997

Graphics performance is a function of CPU power, the capabilities built into the hardware vendor’s graphic accelerator cards, the software drivers provided by the hardware vendor, the effectiveness with which the driver software is integrated into the computer’s operating system and the effort spent by each application vendor to take advantage of these multiple tiers of technology. Software developers are faced with a continuing dilemma – to what extent should their applications be optimized to take advantage of a particular set of hardware/software components as compared to making the software more portable between different platforms.

Over the years, a number of different application programming interfaces (APIs) have been introduced, each with the intent of making the process easier. Some were computer-vendor specific while others attempted to become industry standards. For the most part, the tools available for UNIX workstations were different from those offered as comparable PC tools. During the past several years, OpenGL, which was derived from Silicon graphics’ IRIS GL API, has become the most widely accepted standard for both classes of computers.

OpenGL Not A Complete CAD Solution

OpenGL handles graphics at a very detailed level. Most design automation application vendors have opted to use OpenGL in a generalized manner that facilitates software portability but sacrifices best possible performance for the sake of this flexibility. One approach to maintain portability while at the same time get closer to optimized graphics performance would be to create a software layer that would sit between the applications and the current OpenGL API. This optimized higher-level API would utilize both the OpenGL software drivers and the graphics hardware more efficiently.

A group of software and hardware vendors led by Silicon Graphics, Dassault Systemes, Division, Parametric Technology, Prosolvia Clarus and Structural Dynamics Research Corporation have proposed that the CAD industry adopt this concept. Within several months, these companies plan to form a committee that will evaluate proposed APIs that will meet the dual needs of higher performance and software transportability. SGI is leading the charge and has already defined a higher-level API which it calls OpenGL Optimizer.

Providing A Better Tool

As we reviewed SGI’s description of OpenGL Optimizer, it struck us that this new higher-level API contains capabilities that a group of application software developers could incorporate into their packages if they wished to invest the effort. The fact is that under the pressure of continually producing new releases for a wide range of hardware, few programming organizations will invest the effort required to reach this level of multi-platform optimization.

OpenGL Optimizer produces graphic images faster by putting more effort into deciding what should be displayed. You need to remember that a computer produces shaded images of part models and assemblies by breaking surfaces down into individual small polygons, a process called tessellation. By varying the size of these polygons so that flat surfaces have fewer than complex curved surfaces do, the total number of polygons in a scene is reduced while the quality of the image actually improves.

Another way of adding intelligence to the display process is to recognize that objects that are farther away from the viewer need fewer polygons in order to be accurately visualized. A third OpenGL Optimizer capability is to remove from the display file objects that are inside or behind other objects. Finally, OpenGL has been defined to take advantage of multiprocessor computing environments.

How much will this speed up display functions for most CAD/CAM/CAE applications? SGI believes the improvement will range from 2X to 10X depending upon the extent to which the application has been manually optimized.

A-E-C Automation Newsletter believes OpenGL Optimizer will offer several benefits in addition to faster performance. One is more consistent performance across platforms. Individual software implementations will be less likely to suffer from programmer misunderstandings of how a particular hardware configuration works. Finally, programmers will be able to devote a greater portion of their time to functional enhancements since they’ll have less graphics code to write.

SGI plans to offer OpenGL Optimizer as a new high-level graphics API to the CAD industry group mentioned earlier. Our expectation is that it will be accepted, perhaps with some modifications to make it less SGI-centric. SGI plans to offer OpenGL Optimizer as a software product whether or not it is accepted as a new standard.