今年の夏に公開された Flash Player 11.4 / AIR 3.4 では、Stage3D のプロファイルに BASELINE_CONSTRAINED が追加されました。これは、従来の BASELINE の機能を若干制限したプロファイルで、やや機能の低い GPU、特に Windows & Intel GMA のサポートを主な目的とした更新でした。
Flash Player 11.6 / AIR 3.6 のベータ版では、それとは逆に、BASELINE よりも機能を若干拡張したプロファイル BASELINE_EXTENDED が利用可能となっています。こちらは標準プロファイルよりも高機能な 3D 表現を実現するものです、
ただし、今回の公開は評価用と位置づけられており、ベータ版だけで利用できる機能とされています。まだ注意して扱ったほうが良い状態ということかと思われます。また、いまのところデスクトップ環境のみの提供です。
拡張プロファイルを使う準備
拡張プロファイルを使うには、requestContext3D() メソッドの第 2 引数に BASELINE_CONSTRAINED を指定します。
stage3D.requestContext3D(Context3DRenderMode.AUTO, Context3DProfile.BASELINE_EXTENDED);
いまのところ、BASELINE_EXTENDED を指定すると、第 1 引数が AUTO になっていてもソフトウェアレンダリングにフォールバックすることはないそうです。
拡張プロファイルを指定して取得した Cotext3D は、より多くの操作を呼び出すことが出来ます。それにあわせて、AGAL にも機能強化さが行われました。
機能が追加された AGAL は、バージョン 2 として、これまでの AGAL と区別されています。AGAL V2 を利用するには、新しい AGAL アセンブラの入手が必要です。 (AGALMiniAssembler)
それから、コンパイル時に SWF のバージョンに 19 を指定すること、AIR の場合は AIR 3.6 の名前空間を指定するのもお忘れなく。
拡張プロファイルで利用できる機能
拡張プロファイルだけで利用できる機能がいくつか公開されています。まだこれから増えたりするかもですが、とりあえず現状の主な項目は以下の通りです。
☆ 新しいテクスチャフォーマット
Context3DTextureFormat に RGBA_HALF_FLOAT という新しい定数が追加されます。名前から、各チャネル 16 ビット、ピクセルあたり 64 ビットのフォーマットだと読み取れます。
このほかにもいくつかの新しいフォーマットが追加されるようで、ASDoc には、 RGBA_FLOAT や BGRA_PACKED なども既に記述があります。もしかすると既に使えるのかも ? です。
☆ 複数の描画ターゲットの指定
setRenderToTexture() メソッドの 5 番目の引数にインデックスを指定することで、最大 4 つの描画ターゲットを指定できます。標準プロファイルや制限プロファイルでは、デフォルト値以外を指定するとエラーになります。
このメソッドを使えば、複数のレジスタが同時に描画処理を行える状況がつくれます。その際、全てのターゲットのビット深度は同じにする必要があります。
この機能に関しては、エラーチェック機能がまだちゃんと付いていないそうですので、念のため。
☆ 長方形のテクスチャ
Context3D に createRectangleTexture() というメソッドが追加されました。正方形以外の、辺のサイズが 2 のべき乗でない RectangleTexture オブジェクトを生成するメソッドです。
RectangleTexture (長方形のテクスチャ) にはミップマップが含まれません。従ってストリーミングも出来ません。バックバッファ用テクスチャの生成などへの利用が想定されているようです。
この機能は AIR のみで利用可能なようです。
☆ サンプラーステートの設定
通常、サンプラーステートは、Context3D.setProgram() が呼ばれた時点で設定されます。これを後から上書きするためのメソッド Context3D.setSamplerStateAt() が追加されます。
設定できるのは、Context3DWrapMode、Context3DTextureFilter、そして Context3DMipFilter です。
あとからステートの変更をさせたくない場合もあるかもしれません。そんなときは、AGAL の "ignoresampler" 属性を使って、このメソッドからの処理を無効にするのもできるようです。
なお、この機能は、すべてのプロファイルで利用できることになるようです。
AGAL バージョン 2
ここはごくごく簡単に項目だけ紹介します。(動作確認ができてないのです)
- 断片プログラムへの深度の指定
- 使用できるレジスタの数の増加
- 条件分岐用の新しい命令の追加
- 断片プログラムで色の変化の割合を計算する命令
- LOD を明示的に指定してテクスチャを取得する命令
コメントする