This week at SIGGRAPH 2012 the Khronos Group is celebrating 20 years of OpenGL, the cross-platform 3D graphics API specification, and has launched two updated versions, OpenGL 4.3 and OpenGL ES 3.0.
OpenGL ES is the cutdown version of OpenGL that powers 3D graphics rendering on mobile phones. It sees a major update that adds GPU support and much enhanced texture rendering speeds. By adding features from OpenGL 3.x and 4.x its shaders have been made more capable, with full support for 32-bit integer and floating point data.
As a result OpenGL ES 3.0 GPUs will support more complex textures including ones with arbitrary sizes (instead of requiring the dimensions of each edge to be a power of two) and with floating point values. Also important is the addition of new compressed texture formats, ETC2 and EAC, that use algorithms devised by Ericsson and and are available royalty free.
OpenGL 4.3 is a decimal point update but it has a long list of enhancements, some of which are to keep it abreast of OpenGL ES 3.0:
- compute shaders that harness GPU parallelism for advanced computation such as image, volume, and geometry processing within the context of the graphics pipeline;
- shader storage buffer objects that enable vertex, tessellation, geometry, fragment and compute shaders to read and write large amounts of data and pass significant data between shader stages;
- texture parameter queries to discover actual supported texture parameter limits on the current platform;
- high quality ETC2 / EAC texture compression as a standard feature, eliminating the need for a different set of textures for each platform;
- debug capability to receive debugging messages during application development;
- texture views for interpreting textures in many different ways without duplicating the texture data itself;
- indirect multi-draw that enables the GPU to compute and store parameters for multiple draw commands in a buffer object and re-use those parameters with one draw command, particularly efficient for rendering many objects with low triangle counts;
- increased memory security that guarantees that an application cannot read or write outside its own buffers into another application’s data;
- a multi-application robustness extension that ensures that an application that causes a GPU reset will not affect any other running applications.
Many consider that OpenGL slipped behind competing graphics packages such as DirectX, but since the Khronos group took the helm things have been moving faster. OpenGL ES still lags behind DirectX, but until Windows Phone 8 is released it will be difficult to compare the two in any realistic way.
The improvements to OpenGL 4.3 are fairly minor with the exception of the compute shaders which make it much easier to use the GPU for non-graphical computations. This would allow the GPU to be used for tasks such as game physics or AI while the graphics pipeline is free to get on with rendering the next frame.
Nvidia has already released a set of beta OpenGL 4.3 drivers and others are likely follow.