研太郎FlashAdobeAIR14こんにちは、ICS川勝です。2015年3月にAdobeから2015年のFlashランタイムのロードマップが発表されました。Adobeは引き続きFlashPlayerとAIRランタイムの機能向上を進めており、四半期ごとのリリースに今回発表のあった機能を投入していく予定のようです。今回はこの中からStage3Dに関するものをいくつかピックアップして紹介いたします。すべてのAIRプラットフォームでStage3DのハードウェアデコードによるVideoTexture機能をサポートVideoTextureはハードウェアアクセラレーションが有効なビデオ動画をStage3DのTextureオブジェクトとして扱うことができる機能です。実装上はビデオとVideoTextureとのリンクさえ設定してしまえば通常のTextureオブジェクトと同等に扱うことができるので、Stage3D上でビットマップのようにビデオの各ピクセルに高速にアクセスできます。現在ハードウェアアクセラレーションの有効なビデオ再生方法としてはStageVideo機能がありますが、StageVideoレイヤーの上に位置しているStage3Dレイヤーは現状透過することができないため、Stage3Dコンテンツとビデオ再生の親和性はあまり高くありませんでした。VideoTextureならStage3Dレイヤー内にハードウェアアクセラレーションの有効なビデオ動画を再生できます。▲StageVideoレイヤーはStage3Dレイヤーを透過して表示することはできない以上のように、VideoTextureを使えば従来は難しかったビデオ動画のStage3Dコンテンツとの共存、および高フレームレートでの複雑な画像処理が可能になり、コンテンツ表現の幅がさらに広がります。多くのモバイル端末にはカメラがついているので、とくにモバイルAIRプラットフォームにとっては大きな新機能になりそうです。PlayerとAIRランタイムは多くのPC、プラットフォームをサポートしているため、Stage3Dはさまざまなハードウェア(GPU)環境で再生されることが考えられます。通常は多くの環境で均一の動作を保つため、GPUプログラミング可能なシェーダーの機能やリソースはあえて低め(古め)のGPU環境にあわせたものとなっています。11.4で追加されました。Language(AGAL)はStage3DでGPUへの命令を記述するための低レベルのシェーダー言語です。このAGALのバージョンも上記のプロファイルで選択できるグレードの1つで、動作するハードウェアが少なくなる代わりにAGALと比べて機能や命令、使用できるリソースを拡張したAGAL2を指定することができました。Extended」で使用できるようになるAGAL3は今までのAGAL、AGAL2に比べてさらにGPUで使用できるリソースが増えました。AGAL3のアップデートでとくに目を見張るのはTokens(命令長)の増加で、AGAL2と比べて2倍、AGALと比べれば約10倍にまで増えることになります。命令長とはシェーダーのGPUに対する命令の数で、AGALはアセンブリ言語のため、変数の代入すら1命令にカウントされてしまいます。3.0で何気なく記述する以下のようなコードがあります。RGBカラーの平均を取ります。3;このコードと同じことを実現しようとAGALに書き換えると、このようになります。変数ft0.xにカラー値rとgを加算して代入します。カラー値r、gが加算された変数ft0.xにさらにカラー値bを加算します。カラー値r、g、bが加算された変数ft0.xを定数3を代入してあるfc0.xで割ります。fc0.x;普段は簡単な式と思っていても、AGALではかなりの命令数を消費してしまうことになるため、命令長上限の増加はかなりうれしいところです。3D空間に配置するライトの数や3Dモデルに仕込めるボーンの数など他オブジェクトに作用するような要素を増やすことができたり、長くなり過ぎてやむなく2回の処理にわけていたような画像処理シェーダー表現を1度に行えるようになります。Format(ATF)は圧縮されたテクスチャをStage3Dで使用するためのファイルフォーマットです。テクスチャは使用する際、GPU向けに圧縮しておけば処理の観点からもビデオメモリ使用の観点からも効率的になります。GPUの種類やプラットフォームによってサポートするテクスチャ圧縮形式に違いがあり、それぞれに対応した圧縮形式のテクスチャを読み込まなくてはなりません。ATFは開発者がターゲットにしたいプラットフォームそれぞれでサポートされているテクスチャ圧縮形式を選択してまとめてパックでき、実行時に自動で最適な圧縮形式のものを使用してくれる便利なフォーマットです。OSでは「DXT」という形式の圧縮テクスチャをそれぞれ用意する必要がありました。結果、圧縮形式が違うと見た目の劣化具合に差異が出ることがあり、プラットフォーム間で均一のクオリティを保てない場合がありました。場合によっては複数の圧縮形式を組み合わせてまとめなくてはならないため、アセットのファイルサイズにも影響があります。▲新しいATFフォーマットならiOSとAndroid、2つのプラットフォーム向けに共通の圧縮フォーマットを選択することもできるため、ファイル容量削減につながる今回、「ETC2」形式のATFがiOSとAndroid向けにサポートされるということは、少なくともこの2つのプラットフォームにおいてはこれらの問題に頭を悩ませなくてよくなるということになります。モバイルアプリ開発者にはかなりの朗報ではないでしょうか。最後にStage3Dに関してはしばらくマイナーアップデート続きだった中、久しぶりにわくわくするような機能アップデートが予定されているようです。個人的にはAGAL3に関しては目に見える機能面の追加はなく、使用できるリソースの緩和のみに留まったことが少し残念ですが、今回のロードマップからStage3Dを機能拡張していくAdobeの姿勢が感じられました。今後のFlashプラットフォームにますます目が離せません。平成28年7月4日に内容をメンテナンスしています。フォローICSインタラクティブディベロッパー。MEDIAは株式会社ICSが運営するオウンドメディアです。ICSはインタラクションデザイン専門のプロダクション。最先端のwebテクノロジーを駆使し、オンスクリーンメディアの表現分野で活動しています。問い合わせ採用情報インタラクションコンテンツの制作や新しいことに挑戦しながら、互いにスキルを高め合えるメンバーをICSでは募集しています。詳しくは採用情報をご覧ください。MEDIAは古い記事でもメンテナンスし続けることで、常に役立つ情報発信を目指しています。