Five years after revealing OpenGL ES 2.0 to the world, the Khronos Groups has recently published the brand new OpenGL ES 3.0 specification. Aimed to be backwards compatible with the previous version, this iteration will enable developers to add more features to graphics applications. We’ve been one of the key members of the Khronos Group, having worked closely with them to make sure that the new version has all the features needed for PowerVR Series6 ‘Rogue’, our next generation of high performance GPUs.
As this release was highly anticipated ahead of SIGGRAPH 2012 – where Imagination was also present -, we can now give you a breakdown of the most important features of OpenGL ES 3.0 and how they will help developers bring high end graphics to the mobile and embedded space.
High-end graphics for a mobile-driven standard
Targeting smartphone and tablet graphics, this latest version has been in progress for some time, as the groups and its members wanted to bring the best set of features from OpenGL while also keeping in mind one of the defining aspects of the mobile world: power consumption. Yes, it comes down to the classical power vs. performance fight off, but with PowerVR Series6 ‘Rogue’ GPUs, we’ve made sure both come out as winners. We’ve fine-tuned our hardware so that we not only include the newly added features in a checklist style, but we’re actually using the architecture’s key strengths to focus the group’s efforts in the right direction. And looking at what has just been published, we can be confident that the PowerVR family will continue to lead the way in every aspect of the mobile market.
Firstly, OpenGL ES is openly targeting developers who work in the consumer devices world: a fast paced environment which needs constant platform and API updates to keep in touch with the cutting edge graphics hardware improvements brought by companies such as ourselves. As a result, we expect OpenGL ES adoption to soar in the upcoming future, reaching 1 billion units per year in 2014, as a study conducted by us shows. The PowerVR Insider programme as well as our upcoming SDK release should keep the momentum going, as developers can start implementing incremental updates to take advantage of the new features of OpenGL ES 3.0.
Experience our visually stunning OpenGL ES 3.0 demos
Furthermore, we’ve prepared a series of demos which will showcase the added features. Most importantly, these will be run on actual silicon which makes this even better for those who want to get a real feel of what the standard actually improves on. In terms of feature comparison with its desktop relative, the OpenGL ES 3.0 embedded profile can be seen as largely a mobile-oriented implementation of the PC-oriented OpenGL 3.3 version, but in general terms of compatibility, it can be placed somewhere between OpenGL 3.1 and OpenGL 4.3.
Our first of the three demos is titled ‘Leaves’ and features the Transform Feedback functionality. This allows for GPU compute style operations within just the graphics API where transformed geometry is not only submitted to the rasteriser for drawing but the results are also written out to memory. Therefore, positions are continuously updated per frame as illustrated in the demo by modelling leaves blowing in the wind. Transform Feedback is used for position and orientation of each leaf and then Geometry Instancing, another key OpenGL ES 3.0 feature, is used to draw the high complexity leaves with close to 300 polygons each.
Transform feedback and Depth Texture Shadow Mapping in Leaves – our OpenGL ES 3.0 demo
Inspired by the 1927 cult classic, we’ve tried to follow in Fritz Lang’s footstepsand created our second clip which we’ve called ‘Metropolis’. It renders a high-rise futuristic urban scene using hundreds of OpenGL ES 3.0 Instanced buildings and flying cars. This new feature reduces API overhead and enables significantly more geometry to be processed without excessive CPU usage. Multiple Render Targets (MRT) are used to add atmospheric bloom effects bringing a cinematic feeling to the scene. High quality anti-aliasing and anisotropic filtering ensures top of the line image quality, which we’re sure would make even the “Master of Darkness” proud.
Metropolis showing a use case for Instancing and MRTs
In our final demo, ‘Shrine’, we’ve maintained the dark-oriented theme and created an eerie night-time scene to show the benefits of Light Indexed Deferred Lighting using OpenGL ES 3.0 Multiple Render Targets. This advanced approach to scene lighting enables up to 4 light sources per pixel selected from up to 1024 lights per scene and can be efficiently combined with advanced hardware based anti-aliasing effects. OpenGL ES 3.0 also adds support for a number of texture features. The most important ones have to do with floating point textures (linked to FP32 support), 3D textures, 2D array textures, non-power-of-two textures, and 1 & 2 channel textures(R & R/G). When rendering textures, emphasis is placed on multisample anti-aliasing (MSAA), which earlier hardware generations could only run against the framebuffer. OpenGL ES 3.0 can presently support MSAA-type rendering for a texture.
Deferred lighting and MRTs in Shrine – our OpenGL ES 3.0 demo
And there’s more: new buffer objects, geometry optimizations and the shading language update
In addition, OpenGL ES 3.0 introduces a number of texture compression standards and a new version of the OpenGL Shading Language ES (GLSL ES 3.0). This includes full support for 32-bit integer and floating point operations as well as an extensive list of texturing facilities, some of which we’ve already outlined. Another important feature relates to geometry processing and is called occlusion queries. This comes as an improvement to our current hardware architecture. As you may know, Imagination’s PowerVR architecture is based on tile-based deferred rendering. This essentially means, among other things, that we efficiently perform hidden surface removal to improve power consumption and reduce memory bandwidth by removing fragments which are not visible in a scene. The benefit of occlusion queries is that a developer can intelligently use it to skip vertex processing as well, therefore removing entire objects before they are rendered. It should lead to less processing which could allow the chip to be available for other things, like GPU compute.
Finally, OpenGL ES 3.0 introduces support for different types of buffers which should establish the way they are implemented and used by developers. Consequently, the standard defines the following objects: Strictly Defined Pixel, Uniform and Frame Buffer Objects. With these new buffers, shaders should now be used more efficiently to reduce the driver’s CPU overhead as confusion among developers regarding their purpose will eventually disappear.
So there you have it, OpenGL ES 3.0 in a (quite large) nutshell! We’d love to tell us what you think of the Khronos Group’s new version. Also, if you have any questions, don’t hesitate to leave a comment in the box below and we’ll get back to you as soon as possible.
For more, keep in touch with us via Twitter and come back to the blog as we will keep you updated on the latest from Khronos and all our partners!