新しい OpenGL 仕様が発表されました。

OpenGL Overview

OpenGL 4.0 は一言で言えば Direct3D 11 (DirectX11)。

シェーダーステージも増えテセレータが追加されています。
OpenGL 3.2 がほぼ Direct3D 10 相当でしたが、これで Direct3D との機能差が
一気に無くなりました。

Direct3D11/DirectX11  OpenGL 4.0
-----------------------------------------------------------------------------
Vertex Shader         Vertex Shader                  (GL_VERTEX_SHADER)
Hull Shader           Tessellation Control Shader    (GL_TESS_CONTROL_SHADER)
Domain Shader         Tessellation Evaluation Shader (GL_TESS_EVALUATION_SHADER)
Geometry Shader       Geometry Shader                (GL_GEOMETRY_SHADER)
Pixel Shader          Fragment Shader                (GL_FRAGMENT_SHADER)
Compute Shader        OpenCL

整数演算や倍精度浮動小数演算(double)も D3D11 同様に追加されています。


OpenGL 3.3 は OpenGL 3.2 の拡張版です。まだ機能差を詳しく確認していませんが
Direct3D 10 に対する 10.1 の位置づけでしょうか。

OpenGL 4.0/3.3 共に OpenGL のバージョンとシェーダー言語のバージョン番号が
統一されました。

OpenGL 2.0   GLSL 1.1    vsh, fsh
OpenGL 2.1   GLSL 1.2    vsh, fsh
OpenGL 3.0   GLSL 1.3    vsh, fsh
OpenGL 3.1   GLSL 1.4    vsh, fsh
OpenGL 3.2   GLSL 1.5    vsh, fsh, gsh
OpenGL 3.3   GLSL 3.3    vsh, fsh, gsh
OpenGL 4.0   GLSL 4.0    vsh, fsh, gsh, tcsh, tesh

tcsh= Tessellation Control Shader
tesh= Tessellation Evaluation Shader

使う側から見れば D3D11 のスレッド対応や豊富な圧縮テクスチャが使えることは
非常に大きな優位点です。

しかしながら OpenGL 4.0 でもテセレーションなどほぼ同等のことができるように
なっています。モバイル向け OpenGL ES と互換性を取りやすい点を考えると OpenGL は
かなり魅力的な環境になったといえるでしょう。


関連エントリ
OpenGL GLSL のバージョン


Android もついに OpenGL ES 2.0 対応となりました。

Download the Android NDK

嬉しいのは NDK による正式対応という点。他のプラットフォームで開発していた
C/C++ のコードを移植できます。OpenGL ES 2.0 を使ったゲームエンジンなどを
そのまま共有できるようになったわけです。

モバイル系の 3D API はほぼ OpenGL ES 2.0 へ集中していますが、アプリケーション
の記述言語はプラットフォーム毎に異なっていました。

Platform           OS            アプリ記述言語    C/C++対応  3D API
-------------------------------------------------------------------------------
iPhone/iPod touch  iPhoneOS      Objective-C/C++   C/C++      OpenGL ES 1.1/2.0
Android            Android       Java(dalvik)      NDK C/C++  OpenGL ES 1.1/2.0
Palm Pre           WebOS         JavaScript        PDK C/C++  OpenGL ES 1.1/2.0
Windows Phone 7    WindowsCE6    C#                ?          ?

Palm Pre でも同様に PDK による C/C++ と OpenGL ES 1.1/2.0 対応が発表されている
ようです。

Plug-in Development

OpenGL ES と同じように、C/C++ が共通で使える言語となっています。
Windows Phone 7 はどうなるでしょうか。


関連エントリ
OpenGL を Direct3D 互換で使う


Hybrid W-ZERO3 (WS027SH) と SC-01B の d3dmcaps 情報を送っていただいたので
更新しました。

Direct3D Mobile DeviceCaps 一覧

SHARP Hybrid W-ZORO3 (WS027SH) は Qualcomm MSM7200A を搭載しており ATI 製
GPU core によるアクセラレータが有効となっていました。

WILLCOM HYBRID W-ZERO3

機能も TouchDiamond 等、MSM7201A 内蔵 GPU に非常によく似ていることがわかります。
CPU も同じ ARM11 だしほぼ同等の機能&性能ではないかと考えられます。
特筆すべき点としては ZERO3 系で初めて 3Dアクセラレータを搭載したということ。
Qualcomm の MSM 系は採用機種も多く珍しい存在ではありませんが、3G 機能のおかげで
ZERO3 も 3D や GPS など他のスマートフォンと同等の機能が使えるようになりました。


docomo の SC-01B は d3dmcpas を見る限りハードウエアアクセラレータが無効と
なっているようです。ところが調べてみると、搭載されている S3C6410 自体は
高機能なことがわかります。

SAMSUNG SC-01B

3D アクセラレータが載っており、OpenGL ES 2.0 対応なのでおそらく Shader も
使えるはずです。Direct3D Mobile に対応していないのは残念ですが、OpenGL ES なら
ハードウエアアクセラレータが使えるかもしれません。
CPU 自体も ARM11 core ながら 1176ZJF なので VFP がついています。
さすがに最新の Snapdragon 等 ARM v7+GL ES 2.0 系と比較するのは酷ですが
VFP や OpenGL ES 2.0 対応など全体的に Qualcomm MSM7~ 系より上だと感じました。
S3C6410 は SmartQ5 にも使われているようです。


NetWalker は OpenGL ES 2.0 テスト機として活躍しています。
解像度が高いのでフルスクリーンだと遅いけどシェーダーもきちんと動くし、
コンパイルは遅いけど自分でビルドできるのですっかり開発用になってしまいました。
GPU だけでなく ARM Cortex-A8 のテストにも良い感じで使えます。

NetWalker に使われている Freescale i.MX515 の GPU は AMD (ATI) Z430 です。
未確認ですが、おそらく Snapdragon 系 (QSD8250等) に使われているものと同じだと
思われます。ただし CPU core は同じ ARM v7 世代ですが異なるものです。

       NetWalker     iPhone 3GS    Nexus One他
       i.MX515        S5PC100       QSD8250 (Snapdragon)
GPU    ATI Z430      PVR SGX535     ATI Z430
CPU    Cortex-A8     Cortex-A8      Scorpion

どれも ARM v7 で OpenGL ES 2.0 対応です。
Cortex-A8 は VFP が低速なので、速度を優先する場合はたとえスカラーであっても
積極的に NEON 命令を用いる必要があります。(参考)
Scorpion の VFP/NEON の場合は、果たしてどのような特性を示すでしょうか。


ほぼ 2択となった Desktop と違い、Mobile 向け GPU はまだまだ種類が豊富です。
それぞれ GPU 毎に各社から OpenGL ES 2.0 Emulator が提供されているようです。
ARM 製, NVIDIA 製のものもありました。

AMD OpenGL ES Emulator
Imagination POWERVR Insider
ARM mali Developer Center OpenGL ES 2.0 Emualtor
NVIDIA Developer Zone Tegra 250 Developer SDK



関連エントリ
ARM Cortex-A8 の NEON と浮動小数演算最適化
OpenGL ES 2.0 Emulator
Direct3D Mobile と T-01A の Snapdragon


DirectX SDK Feb10 がリリースされました。

DirectX SDK February 2010

前回 August 2009 で Direct3D 11 が RTM したためあまり大きな変更が無いようです。
Direct3D の core 部分はもちろん変更なし。
D3D 周りはライブラリやツール更新が中心で DLL 番号も変わっていませんでした。
SDK 付属のドキュメント(マニュアル) Windows DirectX Graphics Documentation
に至っては August 2009 のまま。

ドキュメントに Direct3D 9, 10, 11 と 3バージョン併記されている状態はいつまで
続くのでしょうか。10,11 が FueatureLevel によって Direct3D 9 仕様を取り込んだ
ため、従来であれば刷新されていてもおかしくはない状態です。
Windows7 の普及次第かもしれません。
今後 Direct3D 11 対応のツールやドライバが増えてくれることを願うばかりです。


関連エントリ
DirectX SDK August 2009 の解説と Direct3D 11 RTM


| 次のページ(日付が古い方向)>>