The Khronos Group has released the OpenGL ES 3.1 specification at the Game Developer’s Conference (GDC) in San Francisco. The new specification aims to bring "significant functionality enhancements to the industry-leading, royalty-free 3D graphics API that is used on nearly all of the world’s mobile devices," (not including Windows Phone). Unlike the previous version of OpenGL ES this version is built to bring the most popular features of OpenGL 4.X from the desktop to the mobile space.
Because mobiles generally lack the GPU power of PCs and laptops, the OpenGL ES 3.1 specs are a few steps behind the full OpenGL 4.X ones. The latest ES release is basically a subset of the full version. Nevertheless the new specifications could bring significant improvements and benefits to mobile graphics compared to OpenGL ES 3.0. Jon Peddie research calls it a "significant step forward," with the performance and feature-set of powerful desktops and consoles from just a few years ago.
"OpenGL ES 3.1 provides the most desired features of desktop OpenGL 4.4 in a form suitable for mobile devices," said Tom Olson, chair of the OpenGL ES working group and Director of Graphics Research at ARM. "It provides developers with the ability to use cutting-edge graphics techniques on devices that are shipping today."
The new specification is backwards compatible with the OpenGL ES 2.0 and 3.0 so programmers can build incremental extra functionality into working ES 2.0 and 3.0 applications. Other improvements to the ES 3.1 spec include a GPGPU implementation, separate shader objects and support for indirect draw commands. It doesn't include tessellation or geometry shaders. A full list of key improvements in OpenGL ES 3.1 is reproduced below:
- Compute shaders – applications can use the GPU to perform general computing tasks, tightly coupled with graphics rendering. Compute shaders are written in the GLSL ES shading language, and can share data with the graphics pipeline;
- Separate shader objects – applications can program the vertex and fragment shader stages of the GPU independently, and can mix and match vertex and fragment programs without an explicit linking step;
- Indirect draw commands – the GPU can be instructed to take draw commands from its memory rather than waiting for commands from the CPU. For example, this allows a compute shader running on the GPU to perform a physics simulation and then generate the draw commands needed to display the results, without CPU intervention;
- Enhanced texturing functionality – including multisample textures, stencil textures, and texture gather;
- Shading language improvements – new arithmetic and bitfield operations, and features to enable modern styles of shader programming;
- Optional extensions – per-sample shading, advanced blending modes, and more;
- Backward compatibility with OpenGL ES 2.0 and 3.0 – programmers can add ES 3.1 functionality incrementally to working ES 2.0 and 3.0 applications.
On Wednesday Khronos will be presenting "OpenGL ES 3.1: A Developers Overview". The group will make other presentations and announcements at the GDC concerning OpenGL, WebGL and more.