テクスチャ圧縮
テクスチャデータは、デバイスのビデオメモリ(またはVRAM)に格納されます。ブラウザタブのクラッシュなど、望ましくないことが発生しないように、アプリケーションが VRAM を使い果たさないようにすることが重要です。
エディタには、テクスチャに対して Basis を使用して、損失がある圧縮スキームを適用して VRAM 使用量を劇的に減らす機能があります。
Basis は「超圧縮」されたテクスチャフォーマットです。これは、ランタイムでネイティブにサポートされているハードウェア圧縮フォーマットに変換できる、プラットフォーム非依存の損失のあるブロック圧縮フォーマットです。対応するトランスコードフォーマットは、可能な場合は ASTC、DXT、ETC2、ETC、PVR、ATC の順で選択されます。
次のようなTextureアセットがあるとします。
これは512x512のJPGでサイズは202KBです。しかし、JPGは圧縮された形式であり、グラフィックエンジンに渡されると解凍されたRGB8形式に拡張され、ミップマップレベルを含めると1.05MBのVRAMを占有します。
テクスチャ圧縮を有効にすると、以下のような結果が得られます。
圧縮により、VRAMの使用量が6分の1に減少しました。さらに、この場合、圧縮によりダウンロードサイズが202KBからDefault品質設定とETCモードを使用して最小46KBまで減少しました。
以下に、MacのChromeでのレンガテクスチャの並べて比較を示します。
以下は、MacとChromeで PlayCanvas のキューブを Basis (ETCモード)2 で比較したものと、圧縮していないものです。
Basis テクスチャ圧縮の使用
テクスチャをエディタにインポートしたら、そのテクスチャを選択し、インスペクタを下にスクロールして、Compression セクションを見つけます。
- BASIS をチェックします。
- Import Basis をクリックして、プロジェクトに Basis ランタイムのWASMモジュールを追加します(これは1回だけ行う必要があります)。
- こ のテクスチャで圧縮アーティファクトを減らす必要がある場合は、モードを 'ETC (smaller size, lower quality)' から 'ASTC (larger size, higher quality)' に変更します。
- Normal Map を圧縮する場合は、Normals をチェックします。
- ファイルサイズと品質のバランスを取るために、品質設定を変更します。品質を下げると、より小さなファイルサイズになります。
- Compress Basis をクリックします。
BasisのWASMモジュールは、プリロードダウンロードサイズに追加で253KBのgzip圧縮データを追加しますが、それはレガシーのテクスチャ圧縮フォーマットのファイルを使用する場合と比較してテクスチャサイズの節約によって相殺されるはずです(下記参照)。
テクスチャから Basis 圧縮を削除する方法は次のとおりです。
- BASIS のチェックを外します。
- Compress Basis をクリックします。
もう Basis を使用しない場合は、すべてのテクスチャから Basis 圧縮を削除し、プロジェクトから Basis フォルダを削除してください。