ミップマッピングの利用

Flash Player 9 以降、Adobe AIR 1.0 以降

MIP マップ(ミップマップとも呼ばれる)は、実行時のレンダリング品質とパフォーマンスを高めるためにテクスチャに関連付けられたビットマップの集合です。MIP マップ内の各ビットマップイメージはメインビットマップイメージのバージョンの 1 つですが、詳細レベルはメインイメージよりも低下します。

例えば、MIP マップには 64 × 64 ピクセルの最高画質のメインイメージを含めることができます。この場合、MIP マップ内のその他のイメージは、より低画質の 32 × 32、16 × 16、8 × 8、4 × 4、2 × 2 および 1 × 1 ピクセルになります。

テクスチャストリーミングは、最も画質の低いビットマップを最初にロードしてから、より画質の高いビットマップをロードしてプログレッシブに表示する機能です。画質の低いビットマップはサイズが小さいので、メインイメージよりも高速にロードされます。したがって、アプリケーションユーザーは、メインの高画質のビットマップがロードされる前に、アプリケーションにイメージを表示できます。

Flash Player 9.115.0 以降のバージョンおよび AIR にはこの技術が実装され(このプロセスはミップマッピングと呼ばれる)、各ビットマップのサイズが異なる最適化されたバージョンが作成されます。サイズは 50% から始まります。

Flash Player 11.3 および AIR 3.3 では、 Context3D.createCubeTexture() メソッドと Context3D.createTexture() メソッドの streamingLevels パラメーターを通じてテクスチャストリーミングがサポートされます。

テクスチャの圧縮では、テクスチャのイメージを圧縮形式で GPU に直接保存することにより、GPU のメモリとメモリ帯域幅の消費を抑えることができます。通常圧縮テクスチャはオフラインで圧縮され、圧縮形式で GPU にアップロードされます。ただし、Flash Player 11.4 および AIR 3.4 はランタイムのテクスチャ圧縮をサポートします。これはベクターアートからのダイナミックテクスチャのレンダリングなど、特定の状況で使用すると便利です。ランタイムのテクスチャ圧縮を使用するには、以下の手順を実行します。

  • Context3D.createTexture() メソッドを呼び出してテクスチャオブジェクトを作成し、3 番目のパラメーターで flash.display3D.Context3DTextureFormat.COMPRESSED または flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA のどちらかに渡します。

  • createTexture() から返される flash.display3D.textures.Texture インスタンスを使用して、 flash.display3D.textures.Texture.uploadFromBitmapData() または flash.display3D.textures.Texture.uploadFromByteArray() のどちらかを呼び出します。これらのメソッドはテクスチャのアップロードと圧縮を 1 つのステップで行います。

MIP マップは、次の種類のビットマップに対して作成されます。

  • ActionScript 3.0 Loader クラスを使用して表示されるビットマップ(JPEG、GIFまたはPNGファイル)

  • Flash Professional ドキュメントのライブラリに含まれるビットマップ

  • BitmapData オブジェクト

  • ActionScript 2.0 の loadMovie() 関数を使用して表示されるビットマップ

MIP マップは、フィルターが適用されたオブジェクトまたはビットマップキャッシュされたムービークリップには適用されません。ただし、フィルターが適用された表示オブジェクト内にビットマップ変換が含まれている場合は、そのビットマップがマスクされたコンテンツ内にある場合でも、MIP マップが適用されます。

ミップマッピングは自動的に行われますが、次のガイドラインに準拠していれば、イメージでこの最適化手法を確実に利用できます。

  • ビデオ再生の場合、Video オブジェクトの smoothing プロパティを true に設定します(Video クラスを参照)。

  • ビットマップの場合は、 smoothing プロパティを true に設定する必要はありませんが、スムージングを利用した方が品質が明らかに向上します。

  • 2 次元イメージの場合は、ビットマップサイズを 4 または 8 で割り切れるサイズにします(例えば 640 x 128 では、320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x 2 > 5 x 1 のようにサイズを縮小できます)。

    3 次元テクスチャの場合は、各イメージの解像度が 2 の累乗(2^n)である MIP マップを使用します。例えば、メインイメージの解像度が 1024 x 1024 ピクセルであるとします。MIP マップ内のイメージが合計 11 個の場合、MIP マップ内のその他のイメージは、より低画質の 512 x 512、256 x 256、128 x 128、1 x 1 ピクセルになります。

    幅または高さが奇数であるビットマップコンテンツに対しては、ミップマッピングは行われません。