The Khronos Group has released the OpenGL 3.0 specification, bringing new functionality to the open, cross-platform 3D graphics acceleration platform. OpenGL 3.0 includes GLSL 1.30, a new version of the OpenGL shading language. The OpenGL working group has also defined a set of OpenGL 3.0 extensions that expose potential new functionality for the next version of OpenGL that is targeted for release in less than 12 months, and a set of extensions for OpenGL 2.1 to enable much of the new OpenGL functionality on older hardware. Additionally, OpenGL 3.0 introduces an evolutionary model to assist in streamlining the specification and to enable rapid development of the standard to address diverse markets.
The OpenGL 3.0 specification lets developers tleverage state-of-the-art graphics hardware, including many of the graphics accelerators shipped in the last two years both on Windows XP and Windows Vista as well as Mac OS and Linux. According to Dr. Jon Peddie of Jon Peddie Research, a leading graphics market analyst based in California, the installed base of graphics hardware that will support OpenGL 3.0 exceeds 60 million units. AMD, Intel, and NVIDIA have made major contributions to the design of OpenGL 3.0 and today all three companies announced their intent to provide full implementations within their product families. Additionally, the OpenGL working group includes the active participation of leading developers such as Blizzard Entertainment and TransGaming that have played a vital role in ensuring that the specification meets the genuine needs of the software community.
OpenGL 3.0 introduces numerous new features including:
- Vertex Array Objects to encapsulate vertex array state for easier programming and increased throughput;
- Non-blocking access to Vertex Buffer Objects with the ability to update and flush a sub-range for enhanced performance;
- Full framebuffer object functionality including multi-sample buffers, blitting to and from framebuffer objects, rendering to one and two-channel data, and flexible mixing of buffer sizes and formats when rendering to a framebuffer object;
- 32-bit floating-point textures and render buffers for increased precision and dynamic range in visual and computational operations;
- Conditional rendering based on occlusion queries for increased performance;
- Compact half-float vertex and pixel data to save memory and bandwidth;
- Transform feedback to capture geometry data after vertex transformations into a buffer object to drive additional compute and rendering passes;
- Four new texture compression schemes for one and two channel textures providing a factor of 2-to-1 storage savings over uncompressed data;
- Rendering and blending into sRGB framebuffers to enable faithful color reproduction for OpenGL applications without adjusting the monitor's gamma correction;
- Texture arrays to provide efficient indexed access into a set of textures;
- 32-bit floating-point depth buffer support.
The new version of the OpenGL Shading Language, GLSL 1.30, provides front-to-back native integer operations including full integer-based texturing, integer input and outputs for vertex and fragment shaders and a full set of integer bitwise operators. It also improves compatibility with OpenGL ES, adds new interpolation modes, includes new forms of explicit control over texturing operations, provides additional built-in functions for manipulating floating-point numbers and introduces switch statements for enhanced flow control within shader programs.
The OpenGL working group has also released a set of extensions to OpenGL 3.0 that can be immediately used by developers and, after industry feedback, will potentially be included in the next generation of OpenGL targeted for release in less than 12 months. These extensions include geometry shaders, further instancing support, and texture buffer objects.
Khronos also released a number of extensions to OpenGL 2.1 which enables some of the new features in OpenGL 3.0 to be used on older generations of hardware. These extensions include enhanced VBOs, full framebuffer object functionality, half float vertices, compressed textures, vertex array objects and sRGB framebuffers.
Additionally, OpenGL 3.0 defines an evolutionary process for OpenGL that will accelerate market-driven updates to the specification. The new OpenGL API supports the future creation of profiles to enable products to support specific market needs while not burdening every implementation with unnecessary costs. To avoid fragmentation, the core OpenGL specification will contain all defined functionality in an architecturally coherent whole, with profiles tightly specifying segment-relevant subsets. OpenGL 3.0 also introduces a deprecation model to enable the API to be streamlined while providing full visibility to the application developer community, enabling the API to be optimized for current and future 3D graphics architectures.
Finally, the OpenGL working group is working closely with the newly announced OpenCL working group at Khronos to define full interoperability between the two open standards. OpenCL is an emerging royalty-free standard focused on programming the emerging intersection of GPU and multi-core CPU compute through a C-based language forheterogeneous data and task parallel computing. The two APIs together will provide a powerful open standards-based visual computing platform with OpenCL's general purpose compute capabilities intimately combined with the full power of OpenGL.
"OpenGL 3.0 is a significant evolutionary step that integrates new functionality to ensure that OpenGL is a truly state-of-the-art graphics API while supporting a broad swathe of existing hardware," said Barthold Lichtenbelt, chair of the OpenGL working group at Khronos. "Just as importantly, OpenGL 3.0 sets the stage for a revolution to come -- we now have the roadmap machinery and momentum in place to rapidly and reliably develop OpenGL and are working closely with OpenCL to ensure that OpenGL plays a pivotal role in the ongoing revolution in programmable visual computing."