2010年4月3日土曜日

これならFlashに対抗し得る。iPhone/iPadがFlashに対応しないのはこういう見通しあってのことかも | HTML5が高速ゲームエンジンにもなれるというGoogleの実験–結果は大成功 - Tech Crunch Japan

HTML5が高速ゲームエンジンにもなれるというGoogleの実験–結果は大成功 - Tech Crunch Japan

・・・Quake IIエンジンの既存のJavaポートであるJake2をもとに、Google Web Toolkitを使ってJavaScriptにクロスコンパイルした(WebGLやWebSocketsも使い、大量のリファクタリングも行った)・・・ラップトップ機の上で毎秒30フレーム以上、という結果・・・ただしブラウザは、”SafariやChromeなどのHTML5対応ブラウザ”を使うこと・・・

ビデオのデモでは、確かに素晴らしいスピードで動いている。率直に言って、HTML5でここまで出来るのかと驚いた。





実際に動くデモがあるのかと思ったら、Google Codeからコードをダウンロードして自分でコンパイルする必要があるらしい。


WebGLて何?

ところで、正直「WebGL」というものの存在を初めて知った。

WebGL - OpenGL ES 2.0 for the Web

・・・WebGL is a cross-platform, royalty-free web standard for a low-level 3D graphics API based on OpenGL ES 2.0, exposed through the HTML5 Canvas element as Document Object Model interfaces. ・・・made for・・・such as JavaScript.・・・WebGL brings plugin-free 3D to the web・・・

つまり、iPhoneやAndroidでも採用されているOpenGL ES 2.0ベースの、プラグインなしで動作するロイヤリティーフリーの3DグラフィックスAPIで、HTML5のCanvasとJavaScriptで動く、と。

ここには書いていないが、各種ソースによるとハードウェアアクセラレーションも効くようだ。
「Google Chrome」も3Dグラフィックス規格「WebGL」を採用へ:ニュース - CNET Japan


WebGLのサンプルを動かしてみる

JavaScript でリアルタイム 3DCG を実現する WebGL の使い方 - WebOS Goodies

こちらのサイトでWebGLが動くサンプルがあったので、Mac版のChromiumをダウンロードしてコマンドラインで次のようにしてサンプルを動作させるも、自分のMacはOpenGL 2.0に対応したGPUがないらしく、動作せず。残念!

Chromium.app/Contents/MacOS/Chromium --enable-webgl

ページに書いてある「chromium --no-sandbox --enable-webgl」では「--no-sandbox」の部分で「unnsupported command-line flag」と警告が出るようなので削除した。

Windows Vistaでは動作した!

Core2 Quad Q9550 2.8GHz + NVIDIA GeForce 9600 GTで平均50FPS出ていた。デモはフィル領域がかなり広いので640x480や800x600くらいにすれば余裕で60FPS出そうだ。

ブラウザだけで動いているんだなぁと実感するのは、キャンバスを右クリックしてもFlashではなく標準的なコンテクストメニューが表示されることと、フレームレートの表示が普通のHTMLテキストであること。

これは新しい世界だと感じた。


これならFlashにも対抗し得るかも

OpenGLということは、なにも3D専用というわけではない、2Dだって扱えるわけで、これならFlashにも対抗しうる。HTML5のCanvasだけでは速度に不安があったが、これなら十分な速度が出るだろう。

まだまだ開発中らしいが、iPhone/iPadがすでにOpenGLに対応していること、AppleがWebGLのワーキンググループに参加していることを考えると、iPhone/iPadでFlashに対応しないのは将来的にこういった見通しがあるからなのかもしれないと思った。
WebGL - Wikipedia

やはりここで気になるのは、IEがこれをサポートするかどうかだが、少なくともWikipediaでは、Microsoftがワーキンググループに参加しているような記述は残念ながら無い。

ハードウェアアクセラレータが必要など普及のためにはハードルがいくつもありそうだが、将来的にはやはり、この方向が望ましいと思う。

状況を考えると、PCよりも、むしろiPhone/iPadやAndroid上で普及するのが先になるかもしれないとも思った。