Unity エディターでは、JPEG や PNG などの一般的な形式のテクスチャソースファイルを読み込むことができます。しかし、GPU はこれらの形式をランタイムには使用しません。GPU は、メモリ使用量とサンプリング処理の速度に最適な、異なる特殊な圧縮形式を使用します。
テクスチャ圧縮形式は、テクスチャアセットのインポート設定で設定することができます。テクスチャアセットをプロジェクトに加えると、Unity エディターは、自動的にビルドターゲットごとに適切な圧縮形式を選択します。ただし、ほとんどのプラットフォームで複数のテクスチャ圧縮形式を適用できます。
テクスチャ圧縮形式は、ロード時間、GPU フレーム時間、メモリ使用量、視覚的な品質、ビルドサイズ、圧縮時間に影響を与えるため、この設定を変更する前にそれを理解しておくことが重要です。
このページには以下の情報が含まれています。
テクスチャアセットのインポート設定に関する一般的な情報については、テクスチャインポート設定 を参照してください。各プラットフォームの推奨、デフォルト、適応するテクスチャ圧縮形式については、プラットフォームごとの推奨、デフォルト、適応するテクスチャ圧縮形式 を参照してください。
ビット毎ピクセル (bpp) は、1 つのテクスチャピクセルに必要なストレージの量です。bpp 値が低いテクスチャは、ディスク上およびメモリ上のサイズが小さくなります。bpp 値が低いということは、GPU がテクスチャピクセルを読み取るために使用するメモリ帯域幅が小さいことを意味します。GPU のメモリ帯域幅はフレームレートのボトルネックになることが多いので、テクスチャ圧縮はその回避に役立ちます。
テクスチャアセットの視覚的品質が高ければ高いほど、1 ピクセルあたりのビット数が増え、結果的にビルドサイズ、ロード時間、およびランタイムのメモリ使用量が増加します。すべてのテクスチャ圧縮形式は、ある程度、非可逆的です。非圧縮のテクスチャは最高の品質を提供しますが、1 ピクセルあたりのビット数も最も多くなります。様々なテクスチャ圧縮形式によって、様々な妥協策が可能です。
一般的に、ランタイムパフォーマンスを最高にしディスク上のサイズを最適にするには、ほとんどのテクスチャアセットについて、ターゲットデバイスでサポートされているテクスチャ圧縮形式を選択し、必要な視覚的品質を実現するためにピクセルあたりのビット数を最小にする必要があります。
テクスチャを特定の目的で使用する場合、個々の設定を変更することができます。たとえば、1 つのチャンネルしかないテクスチャをマスクとして使用する場合、ファイルサイズを減らしながら品質を維持するために BC4 形式を選択することができます。また、ピクセルパーフェクトの UI を実現するためにテクスチャを使用する場合は、圧縮なしを選択することも可能です。
ターゲットとするプラットフォームやデバイスがサポートする形式を選択してください。デバイスがサポートしない圧縮形式のテクスチャをロードすると、Unity は、そのプラットフォームのデフォルトの非圧縮形式にテクスチャを解凍し、非圧縮のコピーを元の圧縮テクスチャと一緒にメモリに保存します。これにより、テクスチャの読み込み時間が長くなり、追加のメモリが使用されます。デバイスがサポートする圧縮形式でテクスチャをロードすると、GPU は変換の必要なしにデータを使用することができます。
Crunch (クランチ) 圧縮は、DXT または ETC 圧縮の上に動作する圧縮形式で、可変ビットレートの圧縮を追加します。Unity は、クランチで圧縮されたテクスチャを読み込むと、CPU 上で DXT または ETC に解凍します。テクスチャは CPU で DXT または ETC に解凍され、DXT または ETC で圧縮されたテクスチャデータが GPU にアップロードされます。
クランチ圧縮は、テクスチャのディスク使用量を可能な限り少なくしますが、ランタイムのメモリ使用量には影響しません。クランチテクスチャの圧縮には時間がかかりますが、ランタイムでの解凍はかなり高速です。クランチ圧縮の非可逆性を調整することで、ファイルサイズと品質のバランスを取ることができます。
ビルドのサイズを特に気にする場合に、ターゲットプラットフォームでクランチがサポートされている場合は、クランチ圧縮を加えることを検討してください。
テクスチャのインポート設定と、プラットフォーム固有のオーバーライドの設定方法については、テクスチャのインポート設定 を参照してください。