OpenGL ES 3.0
( Update 8/6/12: OpenGL ES 3.0 has arrived )
It’s about time to update the old OpenGL ES 2.0 specs that were first made public 2007. In the five years since then, much has happened: The ‘bigger brother’ OpenGL got a bit more modern API and three new shader stages. Mobile GPUs are now much more advanced and feature unified shaders that are even capable of OpenCL processing (ImgTec SGX).
I’m hoping for an OpenGL ES 3.0 (codename ‘Halti’ according to Rightware and ImgTec – codename ‘Haiti’ according to the Wikipedia – as Rightware and ImgTec are in fact members of Khronos I’ll believe them over the Wikipedia ;-) ) later this year. It’s about time and Rightware seems to believe that too, at least they already announced a benchmark for OpenGL ES 3.0 Halti.
The big question – at least for me at the moment – is what OpenGL version will this ‘mobile cousin’ be based on and how many compatibility will remain? Even the latest OpenGL 4.2 still has a well supported compatibility profile that is compatible with all older – even fixed-function – GL version. OpenGL ES 2.0 on the other hand was not even compatible with OpenGL ES 1.x! Let’s hope OpenGL ES 3.0 will make the same bold move and provide a clean API. Alternatively I can think of the introduction of profiles similar to the desktop version, a ‘compatibility’ ES with support for old stuff and an ‘OpenGl ES 3.0 core’ profile with just the new API oriented at the ‘core’ desktop API.
The second question would still be, will Halti be oriented at GL 3.2 and require Geometry Shaders or will we see a GL 3.0 oriented ES version without them? Or do we get both? An OpenGL ES 3.0 without GS and 3.x with GS? If so, please don’t let it be 3.1 but also 3.2, otherwise the confusion would be perfect…
In the best case Halti would be just OpenGL 3.3 with relaxed requirements regarding some limitations like the minimum number of supported vertex attributes and float point accuracy. I’d really love to see multiple render targets, geometry shaders, explicit attribute locations, texture samplers and vertex array objects on all modern mobile devices. To get rid of the syntax differences between desktop and mobile GLSL shaders are also a plus – after you got used to ‘in’/'out’ you don’t want to switch back to ‘attributes’ and ‘varying’ again, at least you don’t want to switch all the time and use the same shader files on both platforms (ideally even on the web!).
And if were very lucky, Khoronos might also update WebGL to be based upon OpenGL ES 3.0 so we get a very similar API for the desktop, mobile and the web. But please think twice about the version numbers, that last thing we want to memorize is that OpenGL 3.2 = OpenGL ES 3.0 = WebGL 2.0 …