Today, Khronos celebrates the 20th anniversary of OpenGL at Siggraph 2012 with two major announcements pertaining to OpenGL accompanied by many others in OpenCL and computer vision. The first major announcement is the release of OpenGL ES 3.0 and the second is the announcement of OpenGL 4.3.
With OpenGL 3.0 they’ve enhanced the shading language with GLSL ES 3.0 with updated syntax and features to enable better compatibility with desktop OpenGL. They’ve also added full support for 32-bit integers and floats in shader programs. Additionally, most of the OpenGL ES 2.0 limitations have been removed, giving more freedom to programmers. Khronos has also added extensive new texture functionality with all implementations support 32 textures as well as standard support for 3D textures and texture arrays. They have also added new ways to draw triangles and cloned objects with a single command in order to reduce CPU and GPU overhead.
While on the topic of textures, Khronos has implemented a new texture compression algorithm for both OpenGL ES 3.0 and OpenGL 4.3. As a result of the new texture compression algorithm, compliments of Ericsson, there is less network bandwidth needed in order to download games, smaller application sizes in memory as well as GPU memory bandwidth needed to access textures. Their Adaptive Scalable Texture Compression or ASTC implemented as a core in both OpenGL and OpenGL ES from these versions, here on out. With ETC2 (Ericsson Texture Compression 2) for RGB you are able to do 4bits per pixel, 3-channel with both linear or sRGB color encoding. There is also an EAC algorithm for R or RG.
Khronos has really been putting in quite a bit of effort into building a bigger and bigger bridge between their OpenGL and Open GL ES standards. Based on upon what we’re seeing with Khronos’ standardizations and extensions like their new KHR extension, they are trying to make it easier for programmers to write programs for both platforms and eventually to merge the two into one or at least to being nearly the same.
With OpenGL 4.3 there are improvements to the fidelity of renders at even faster rates than ever before. They’ve also enabled compute shaders that allow for OpenGL effects not possible before. Additionally, it enables OpenGL to offload more tasks to the GPU allowing for more advanced game play on the CPU.
OpenGL 4.3’s new pipeline functionalities include the ARB_computer_shader introduces a new shader stage and enables advanced processing algorithms that utilize the fundamental parallelism of the GPU to get more done in a faster manner. The ARB_multi_draw_indirect feature allows for many GPU objects to be drawn with one command, similar to what we saw in OpenGL ES 3.0. Another important ARB feature is the ARB_ES3_compatibility which adds features not previously present in OpenGL and also brings the EAC and ETC2 texture compression formats mentioned in the OpenGL ES 3.0 standard as well. Hopefully, this will prevent users having to download 30GB games in the future (we’re talking to you Rockstar).
They’ve also included a compute shader which helps execute general purpose GLSL shaders. The compute shader is complementary to OpenCL, as we also feared that this may be competing with OpenCL. Since the compute shaders are not a fully heterogeneous CPU/GPU framework using full ANSI C, it isn’t necessarily a competing standard. The compute shader will also be a standard part of all OpenGL 4.3 implementations which brings the OpenGL standard up to DirectX 11 functionality. The compute shader also enables image processing including Gaussian blurs, among many others. The compute shaders can also be used for physics processing, which is a functionality that OpenCL already offers.
Khronos also announced their new API standards for computer vision and sensors called OpenVL and SteamInput. OpenVL is Khronos’ recognition of the fact that there needs to be standardization of computer vision and sensors in order to make the implementation of Augmented Reality easier and smoother across all platforms. Not to mention, easier to program for as well. OpenVL’s ability to accelerate vision hardware enables vendors to implement accelerated imaging and vision algorithms while leveraging OpenCV. OpenVL serves as an accelerator for CV libraries like OpenCV rather than a replacement for it. It helps make various hardware vendors’ implementations work across hardware platforms and operating systems.
StreamInput’s standard is still a ways off, as a stable spec is expected in Spring 2013, however the working group was announced last August. The goal of the StreamInput standard is to push sensor fusion to combine different sensors together in order to improve accuracy and power consumption to reduce the time that they need to be turned on to acquire ample data to generate a result. Some examples of sensor fusion include using an accelerometer combined with a barometric data to sense how many floors have been travelled in an elevator for indoor navigation. Another example would be to combine a gyroscope and accelerometer to create a high-accuracy, high-frequency positional data stream at lower power by running different sensors at different frequencies to use the lower power sensor more and the higher power sensor less frequently. Interesting to see Razer included in this list of participants as well.
An interesting chart showing GPU performance in 20 years, we’re not sure how Qualcomm and AMD feel about this table
Overall, this 20th year from OpenGL really looks to be an exciting one and we really can’t wait to see all of these features implemented across the computing industry. We are especially excited to see more in mobile from Khronos with all of the added APIs that should help Augmented Reality really take off beyond being a so-called ‘pie in the sky’ type of technology. We are glad to see a working group like Khronos to be able to work together with the major semiconductor manufacturers in conjunction with handset makers to create industry-wide standards that ultimately help everyone get a better product for the consumer.