フォト

Google AdSense


  • AdSense
無料ブログはココログ

« OpenGL 4.3とOpenGL 3.0 | トップページ | 今すぐOpenGL ES 3.0開発を始めるには? »

2012.08.07

OpenGL ES 3.0雑感

とりあえず、Shader.jpに第一報書いたけど新しい要素などをようやく読んだので雑感。

OpenGL ES 3.0 の仕様が公開に
http://www.shader.jp/?p=751

新要素はプレスリリースに書かれているものの他に仕様書の312ページの"Version 3.0 and Before"も参考になると思います。

とりあえず、OpenGL ES 3.0 になってDirect3D9.0にあったけどES 2.0になかったような機能はだいたいサポートされたんじゃ無いでしょうか?その上で、Direct3D10以降に入ってきたりしてる要素がちょっと入り込んでるけど、ジオメトリシェーダは無いって感じですね。そんなわけで、PS3とかXbox 360世代のゲームなんかは移植ができるんじゃないかなぁ(GPUパワー次第だけど)。

とりあえず、個別の新機能のうち気になるモノをチェック。基本的にはすでにOpenGLであるものだけどESとしては新機能ということで。

transform feedback 1 and 2
これは頂点シェーダの出力をバッファに書き戻せる機能で、いわゆるDirect3D的にはStream outputですね。OpenGLだとジオメトリシェーダ使わなくても使える機能ですね。

uniform buffer objects including block arrays
これはGLSLのuniform変数をバッファオブジェクトとして扱えてブロック単位で管理、更新などできる仕組み。これは、Direct3DでいうConstant bufferですね。

OpenGL ES 2.0の時からuniform変数を複数個更新するのに一個一個更新するのは効率が悪いだろうと思って欲しかった機能なのでありがたいですね。

boolean occlusion queries, including conservative mode
Occlusion Queryですね。これは描画負荷削減に役立つのでありがたい。

instanced rendering, via shader variable and/or vertex attribute divisor
インスタンシングですね。これはCPUのDrawコール減らせるのでやっぱりありがたいです。

multiple render targets
マルチプルレンダーターゲット。これで、古典的なDeferred Renderingなどの実装ができますねぇ。

2D array and 3D textures
テクスチャ配列と3Dテクスチャ。

R and RG textures
R32とかR16G16フォーマットみたいなテクスチャのしようが可能。テクスチャでハイトマップ(ディスプレースメントマップ)や法線マップなどにありがたい。

at least 32 textures, at least 16 each for fragment and vertex shaders
32個テクスチャが使えるようになる。内訳として頂点シェーダ16とフラグメントシェーダ16。

個数が重要と言うよりも頂点シェーダがテクスチャ参照できるのでテセレーション無しディスプレースメントマッピングができますね。シェーダでハイトマップ地形とかできます。

ETC2/EAC texture compression formats
新しいテクスチャ圧縮フォーマット。PVRTとかはベンダー依存なので標準であると助かる(おもにAndroid)。

depth textures and shadow comparison
深度テクスチャやシャドウ比較。iOSでは拡張ですでにできたけど、標準に。

ようするにShadow mapping用。

色々と新機能は他にもあるけどこの辺は自分的によく使うもの。

そんなわけでこれがiPhoneやiPadでいつ頃使えるかは分からない(早ければiPhone 6(2013) / iPad 6(2014)を予想)けど、このぐらいから本格的にスマートフォンとタブレットに今の家庭用機クオリティのゲームが来るんじゃ無いかなと予測してます。

« OpenGL 4.3とOpenGL 3.0 | トップページ | 今すぐOpenGL ES 3.0開発を始めるには? »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« OpenGL 4.3とOpenGL 3.0 | トップページ | 今すぐOpenGL ES 3.0開発を始めるには? »