OpenGL may have fallen into some degree of disuse among PC game developers, but OpenGL ES is very much the graphics API of choice for phone and tablet games. Today, the Khronos Group announced a new version of the API, OpenGL ES 3.1, which introduces a slew of improvements. Among them: the ability for apps to use graphics hardware for physics simulations and other general-purpose computing tasks.
Here's a breakdown of the major new features in OpenGL ES 3.1, as described by the Khronos Group:
- 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.
Khronos says that both the OpenGL ES 3.1 spec and the associated reference materials are downloadable here on its website. I guess we'll have to wait a little while for the first games and apps based on the new API, though.