次の世代のFlash Playerは凄いことに!GPUにより数十万ポリゴンが60FPSで動く

今年のAdobe MAX 2010で発表された新技術の一つにFlash Playerの新しい3D APIがあります。現状のFlashの3Dでは数千のポリゴンしか処理できませんが、次の時代のFlash Playerでは数十万のポリゴンが処理できるようになります。これは従来と比べて 100倍ものパフォーマンスとなります。どのぐらい凄いかというと、次のビデオを見てもらえばわかるはず。

数十万のポリゴンをHDサイズのフルスクリーンにおいて60 FPSで処理される、という鬼のようなパフォーマンス。なおかつ、CPUの使用率が減るというエンドユーザーに優しい恩恵付き。この技術はFlash PlayerからGPUを利用することにより可能になったものです。コードネームは「Molehill」と呼ばれており、2011年中旬のリリース予定で開発が進められています。

こういったブラウザ上で動くプラグイン・実装として「Unity3D」や「WebGL」 (HTML5時代のブラウザAPI)がありますが、最も普及率の高いFlash Playerでハイクオリティな3Dが動作することは注目です。

それでは、Adobe MAXで紹介された詳しい仕様について紹介します。

フレームワークの利用

冒頭のビデオはAlternativa3Dという3Dエンジンで作られたデモです。Molehillは低レベルのAPIでありネイティブで使うよりも3Dエンジンでの利用が想定されているようです。

対応しているライブラリはAlternativa3D、Away3D、Flare 3Dなど。現在もPapervision3Dをはじめとしてサードパーティのエンジンを使うことが多いと思いますが、GPU利用になった場合にますますフレームワークの存在がさらに必要性が増すでしょう。Adobe MAXの発表の限りではAlternativa3Dが一番有力な印象ですが、Away3DやFlare3D、Yogute3Dなどの3Dライブラリのデモを見ることができました。

Away3D ver4のデモ:3Dのメタボール、鏡面反射の再現など

Alternativa3D ver8のデモ:動的なシェーディングやシャドーの実装が可能であり、別のデモでは400万△を表示。

(追記)他にもAdobe MAXで紹介されたデモのいくつかがYouTubeにアップされていたので紹介します。見るときは、画質を480p以上にして見ることがオススメです。

Away3DメンバーのRob Batemanと、EvoflashによるAway3Dのデモ「Disconnected Demo」。灰色の街を飛び続ける。ポリゴンの数、水面の反射や紫のメタボールが特徴的。

Away3D Molehill Tree Demo from David Lenaerts on Vimeo.

Away3D の Tree のデモ。

MAX Racer – 3D Flash Game with P2P Multiplayer from Tom Krcha on Vimeo. P2Pを利用したマルチプレイング。

複雑な形状の3Dモンスターを複数個描写するパフォーマンス。

しっぽさんのブログの記事の考察も良くまとまっているので、このあたりを読んでおくと良いかも。

次の時代のFlash Playerのレンダリング

Flash 3D APIを通してActionScriptからDirectXやOpenGLを利用できるようになります。DirectXやOpenGLを通し、GPUでテクスチャや物理演算が処理されるため、CPUのパワーをセーブすることができようになります。ソート処理、シェーディング、物理演算などにもGPUが利用できるようになります。

次期のFlash Playerではレイヤーも拡張されています。StageVideoとStage3DというレイヤーがFlashの2Dレイヤーとは別に用意されます。StageVideoとStage3Dはともにハードウェアアクセラレーションを利用したものです。3D APIについてはStage3Dが相当します。

なお、Flash Player 10で実装された2.5Dのネイティブ3Dは、Flash 2D Graphicsのレイヤーの処理になるので、OpenGL/DirectX対応により高速化される対象ではないそうです。

次の時代の3D APIの詳細

セッションでは具体的なソースコードの説明が行われました。

これは石川さんのブログに詳しくまとめられているので、ActionScriptのコードを知りたい方はそちらを参考ください。

また他にも用意されているメソッドの一覧が紹介されました。「drawToBitmapData」などさらなるBitmapDataの高速化が行える技術 のようで気になるところではないでしょうか。

ゲームパッドの対応

また次期Flash Playerはゲームパッドを対応するという発表が基調講演内で紹介されました。新しい3D APIとあわせて本格的なゲームコンテンツの開発も可能になってきます。

個人的考察

この技術が登場した背景には「Unity3D」の影響があったのではないかと思います。Unity3DやWebGLなどFlash Player以外でもブラウザ上で動作する3Dはいくつかあり、GPUを利用しているため従来のFlash Playerにない3Dの処理がウリでした。ただUnity3Dはプラグインの普及率が課題ですし、WebGL自体もまだ実装途中で将来的にもブラウザ互換が現実的に解消されるのは難しいところでもあります。

そういった事情の中、最も多くのブラウザ・デバイスで互換性が保たれるFlash Playerに3D APIを搭載したことは注目です。近い将来、GPUを利用したハイエンドな3Dが商用提案・実装レベルで採用できるようになっていくのではないでしょうか。

また、紹介されたデモが3Dシミュレーションのものばかりなので見落とされがちですが、z=oにしたり物理演算の利用したりといったところで、2Dの表示部分を高速化できる手法も生み出せるのではないかと憶測ですが期待しています。

ハードウェアアクセラレーションの利用について、環境依存の差が発生しFlash Playerそもそものメリットが失われるのではないかという指摘もあるかと思います。それはナンセンスな指摘で、サイトのターゲットユーザーが再生に必要な環境を持つユーザーと一致するのであれば、表現の選択肢が増えたという認識でいれば問題ないと思います。そもそもGPU利用可能なエンドユーザーの比率の数字を見てみない限りは、憶測での議論でしかありません。モバイル対応も前提にするのであれば、こういった機能を利用しなくてもFlash Player 10.1では十分なパフォーマンスを得ることができますし、コンテンツを作る側の自由度が高まったこと(エンドユーザーへのアプローチの種類が増えたこと)は喜ばしいことではないでしょうか。

今後のFlash Playerの進化が楽しみですね!

参考記事

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加

Comment/Trackback 3件