note.x

FlashPlayer11の動作に必要なシステム構成は、http://www.adobe.com/jp/products/flashplayer/tech-specs.html で公開されてるんだけど、Stage3DのGPUアクセラレーションに対応した環境についての明確な情報が見つからない。

Stage3Dが開発コードネーム“Molehill”としてお目見えした際には「DirectX9, OpenGL1.3, OpenGL ES2.0(モバイル) に対応したグラフィックカードを搭載してること」みたいな案内があったんだけど、正式公開時のリリースノートにそういった記述は無い。Known Issuesとして多少の情報が載ってる程度。

リリースノートやらWeb上の情報で見かけたものから把握できたのは

  • Mac OS X では、Intel GMA、ATI Radeon x1600、ATI Radeon 2400 が非対応。
  • VIA チップセットはサポート外。
  • Linux ではGPUアクセラレーションに非対応。
  • 2009年以前にリリースされたカードはサポート外?ドライバの更新日の話?
    (via: http://cuaoar.jp/2011/09/starling-actionscript-3-1.html

といった具合。

MacやLinuxに関しては動かない環境が(特にLinuxは残念な方向に)明確だけど、Window環境についてはかなりアバウトな感じ(オレが見つけられなかっただけかもしれないけど)。http://www.techpowerup.com/gpudb/ で、2009年以降のGPU拾っていけばそれなりに絞り込みができそうな気もするけど、主にWinの場合なんかだとサポート外であっても(ドライバがアップデートされたりして)動作するケースもありそうな気がするし、実際のとこどうなのかが知りたい。

Adobeが「動作確認済GPUリスト」みたいなものを公開してくれることを期待しつつ、個人的にログを取ってみることにした。

Stage3D Hardware Acceleration Test(要:FlashPlayer11)

上記のデモをGoogle Chromeでブラウズすると、WebGL対応の環境なら自動的にGPU名を取得して情報を登録します。WebGL非対応の環境や、GL_RENDERERの戻り値でGPU名が受け取れない場合、もしくはChrome以外のブラウザで閲覧した場合は、手入力でGPU名を登録できるようになっております。登録されたGPUは http://blog.r3c7.net/stage3davailablegpu/ で確認できます。

FP11Betaの時のように Context3D.driverInfo でGPU名が取得できればこんな回りくどいことをしなくて済んだんだけど、他に良い方法が思いつかずWebGLのgetParameterでレンダラを取得してる。なのでWebGL非対応環境と、レンダラ名が「mozilla」とか「ANGLE」、「WebKit WebGL」になってしまうケースでは手入力してもらうしかないという状況。
もっといい方法があればどなたかご教示いただけるとありがたいです。

2011.10.20追記
やっぱり探せてなかった。Adobeの中の人 Andy Hall さんにTwitter経由でStage3Dのハードウェアアクセラレーションをサポートしない環境についての記事を教えて頂きました。
http://kb2.adobe.com/cps/921/cpsid_92103.html
現状は、これらの環境でGPU使えないことを承知した上でコンテンツを作る必要があると。

Stage3D hardware accelaration available GPU listの方は動作実績リストとして一応の意味があると思うので、引き続き情報提供いただけるとうれしいです。


実に1年ぶりのエントリー。自分でもびっくりした。

FlashPlayer11がリリースされてStage3Dが解禁になったのを機に、以前作ってた自作ライブラリをStage3Dベースに置き換える作業をグダグダと進めてるので、作りながら気づいたことなんかを書き残していけたらいいなと。そんな感じでnote.x再始動であります。

ライブラリの現状は以下のような感じ。

※いずれのデモも要FlashPlayer11、さらに再生環境がStage3DのサポートするGPUを搭載している必要があります。GPU非対応の環境では、ソフトウェアレンダリングで再生されますが、その場合何も表示されなかったりブラウザがクラッシュしたりする可能性があります。

シーングラフ、カメラ実装済。シェーディングについては、現状フラットシェーディングのみ。

Stage3D Test01

ポリゴンのエッジだけを描画する方法で、なんちゃってワイヤーフレーム表示。

Stage3D Test02

旧ライブラリから引き続き.blendローダー搭載。
これだけが他の有名ライブラリに無いトピック。

Stage3D Test03

頂点カラー焼き付けで、なんとなくAO風味。

Stage3D Test04

旧ライブラリはZバッファ持たせたいが為に自前でソフトウェアラスタライズやってた。FlashPlayer10の時点ではそこそこ高速化できてたと思うけど、それでも描画周りがかなり足を引っ張っていて、正直行き詰まり感が強かった。
Stage3Dのおかげでポリゴン描画や座標変換やらをGPUに丸投げできちゃうので、山ほどポリゴン描ける。PV3Dで△1000あたりが限界とかやってたあの頃がウソのよう。ポリゴン描画のためにやらなきゃならない事が相当減ったし、オレ程度のレベルでも何やらスゴげな事が出来そうな気にさせてくれるのはスゲーありがたい。(簡単になったわけではないんだけども)

まぁなんつーか、Stage3D周りはこれまでのAPIから完全に逸脱してるし、機能的にも「劣化OpenGL」みたいな中途半端さがあるけど、なんだかんだいってAS3でこういうのが書けるってのは気楽でいい。これくらいがオレみたいな道楽でリアルタイムレンダリングやってる人間には案配がいい感じがするんですわ。ShockWave3Dよりも遙かに間口が広いと思うし。
地方のWeb屋にとって、仕事にすぐさま活かせるものでは無いからこそ目一杯遊んでおきたい。