日別アーカイブ: 2012年8月18日

OpenGL ES 3.0 と Shader Model の関係、まとめ wiki の更新

OpenGL ES 3.0 の API はおよそ 100 個増えています。
OpenGL ES 2.0 で 150 弱だった命令数が 250 個になりました。
シェーダーと世代の対応は下記の通り。

OpenGL         OpenGL ES        DirectX         ShaderModel
---------------------------------------------------------------
OpenGL 1.x     OpenGL ES 1.x    Direct3D 7      Fixed Pileline
OpenGL 2.x     OpenGL ES 2.0    Direct3D 9      Shader Model 3
OpenGL 3.x     OpenGL ES 3.0    Direct3D 10     Shader Model 4
OpenGL 4.x     --               Direct3D 11     Shader Model 5

OpenGL ES 3.0 は OpenGL 3.x 同様に DirectX10 世代、ShaderModel 4.0 に
相当します。

ハードウエアも API も順当に進化しています。
GPU 毎に機能差は生じますが、下記はそれぞれ最小値の比較です。

                            GLES 2.0   GLES 3.0  (DirectX)
-----------------------------------------------------------------
Vertex Uniform Vectors        128        256     (VSH Constant)
Fragment Uniform Vectors       16        224     (PSH Constant)
Vertex Attribs                  8         16     (VSH Input)
Vertex Output Vectors           8         16     (VSH Output)
Fragment Input Vectors          8         15     (PSH Input)
Draw Buffers                    1          4     (PSH Output,MRT)
Vertex Texture Image Units      0         16     (Vertex Texture)
Texture Image Units             8         16     (Pixel Texture)
Combined Texture Image Units    8         32

Uniform Block (D3D の ConstantBuffer) があるためこのあたりの制限は
さらにゆるくなるはずです。

このあたりを踏まえて wiki もいろいろ更新しました。

Mobile GPU 毎の機能比較表
OpenGL のバージョン表など
テクスチャフォーマットまとめ
Desktop 向け OpenGL ES 2.0 / OpenGL ES 3.0 実行環境

OpenGL ES 3.0 には GeometryShader がありませんが、これは OpenGL 3.0 も
同様でした。
GeometryShader が追加されたのは OpenGL 3.2 からなので、
同じように OpenGL ES にも今後 GeometryShader が追加拡張される
可能性が高いといえます。

関連ページ
OpenGL まとめトップ