OpenGL ES 3.2 が登場しました。OpenGL ES 3.1 AEP (Android Extension Pack) の機能が取り込まれています。これまで ES にはなかった GeometryShader や Tessellator などに対応しており、機能面では OpenGL 4.x/Direct3D 11 と完全に並ぶことになります。
おそらく AEP 対応 GPU がそのまま OpenGL ES 3.2 になるのではないかと思われます。
現在発売されている端末で AEP (GL_ANDROID_extension_pack_es31a) が含まれている GPU は下記の通り。
Tegra K1 Keper (192) SHIELD Tablet / Nexus 9 Tegra X1 Maxwell (256) SHIELD Adreno 4xx Snapdragon 805/808/810 等
Intel HD Graphics Gen8 も対応しているので、Cherry Trail 搭載 Android 端末が出ればこの一覧に入ることになるでしょう。
シェーダーのバージョンも 3.2 (320 es) です。Version 番号の空きを使い尽くしたので、もし次があるなら番号が飛ぶことになるかもしれません。(GLSL Version 一覧)
NVIDIA の Beta Driver がすでに使えるようになっているので試してみました。
GL_ARB_ES3_2_compatibility で実際に Context を作ることができます。
GL_VERSION: OpenGL ES 3.2 NVIDIA 355.58 GL_RENDERER: GeForce GTX 760/PCIe/SSE2 GL_VENDOR: NVIDIA Corporation GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.20
↓詳細はこちら
OpenGL ES 3.2 は ASTC 対応ですが、やはり OpenGL 4.5 context のまま Texture を読むとパフォーマンスの警告が出るようです。
また OpenGL 4.5 の方にはかなり気になる Extension が増えています。スレッドを使ったシェーダーのコンパイルが可能になるとのこと。
GL_ARB_parallel_shader_compile
なお Android もついに低レベル API である Vulkan 対応を発表しています。予想されてきたことではありますが、低レベル API はプラットフォームごとに完全に分かれることになりました。
API Platform ------------------------------------------ Direct3D 12 Windows Desktop / Mobile Metal iOS / Mac OS X Vulkan Android
パフォーマンスだけでなく Mobile / Desktop API の統合や、レガシーな OpenGL API からの脱却などさまざまなメリットもありますが、開発者にとっては悩ましいところです。
関連エントリ
・Desktop GPU と OpenGL ES 3.1 API
・Android 5.x OpenGL ES 3.1 と対応 GPU
・OpenGL ES 3.1 は OpenGL 4.x 相当で ComputeShader に対応
・3D 低レベル API の現状 Direct3D 12/Metal