DirectX 11 以上のクラスの GPU を搭載し、BC7 および BC6H 形式のサポートを利用できることが保証されているデバイスの場合、推奨される圧縮形式の選択は以下のとおりです。RGB テクスチャ - 4 ビット/ピクセルの DXT1。RGBAテクスチャ - BC7 (高品質、圧縮が低速) または DXT5 (圧縮が高速)、両方とも 8 ビット/ピクセル。HDR テクスチャ - 8 ビット/ピクセルの BC6H。PC で DirectX 10 クラス GPU (2010 より前の NVIDIA GPU、2009 より前の AMD、2012 より前の Intel) をサポートする必要がある場合、これらの GPU は BC7 も BC6H もサポートしないため、BC7 ではなく DXT5 が推奨されます。
サポートされているすべての形式の詳細については、サポートされるテクスチャ形式のリファレンス表を参照してください。
A8 チップ (2014) 以降を使用する Apple デバイスでは、ASTC が RGB および RGBA テクスチャに推奨されるテクスチャ形式です。この形式では、8 ビット/ピクセル (4x4 ブロックサイズ) から 0.89 ビット/ピクセル (12x12 ブロックサイズ) まで、詳細なレベルでテクスチャの品質とサイズを選択できます。古いデバイスのサポートが必要な場合や、その他の Crunch 圧縮を必要とする場合、Apple デバイスは A7チップ (2013) 以降のETC/ETC2 形式をサポートします。さらに古いデバイスでは、使用する形式は PVRTC です。iOS では、プレイヤー設定でデフォルトのテクスチャ形式を設定できます。PVRTC は可能な限り幅広い互換性を実現します。ASTC が推奨されますが、A7 デバイス (ごく初期の Metal 対応デバイス) ではサポートされておらず、ランタイムに解凍されます。
サポートされているすべての形式の詳細については、サポートされるテクスチャ形式のリファレンス表を参照してください。
Android のテクスチャ形式のサポートは複雑です。異なるサブターゲットを使用して、複数のアプリケーションバージョンをビルドすることが必要な場合があります。
Player Settings でデフォルト形式を選択できます。選択肢は、ASTC、ETC2、ETC (RGB では ETC1、RGBA では ETC2) です。異なる設定が相互作用する方法の詳細については、テクスチャ圧縮設定を参照してください。
LDR、RGB、RGBA テクスチャについては、OpenGL ES 3.1 または Vulkan をサポートする最新の Android GPU のほとんどが以下のような ASTC 形式もサポートしています。Qualcomm GPU Adreno 4xx / Snapdragon 415 (2015) 以降、ARM GPU Mali T624 (2012) 以降、NVIDIA GPU Tegra K1 (2014) 以降、PowerVR GPUs since GX6250 (2014) 以降。
古いデバイスのサポートが必要な場合、またはその他の Crunch 圧縮が必要な場合は、Vulkan または OpenGL ES 3.0 を実行するすべての GPU は ETC2 形式をサポートします。生成される画像の品質は非常に高く、1 - 4 コンポーネントのテクスチャデータをサポートします。さらに古いデバイスの場合、通常は ETC 形式のみが使用可能です。欠点は、直接アルファチャンネルがサポートされていないことです。スプライトの場合、Unity には、テクスチャを 2 つの ETC1 テクスチャ (1 つは RGB 用、1 つはアルファ用) に分割することで ETC1 圧縮を使用するオプションが用意されています。これを有効にするには、スプライトアトラスのインポート時に、テクスチャで Android 固有のスプリットアルファチャンネルオプションを有効にします。スプライトシェーダーは両方のテクスチャをサンプリングし、それらを組み合わせて最終結果を生成します。
ASTC 形式をサポートしない古い Android デバイスでは、テクスチャは非圧縮の RGBA 32 ビット形式に解凍されます。これにより、メモリ使用量が増加し、CPU で実行される解凍が低速になる可能性があります。
HDR テクスチャの場合、ASTC HDR は Android デバイスで使用できる唯一の圧縮形式です。ASTC HDR には Vulkan または GL_KHR_texture_compression_astc_hdr サポートが必要です。ASTC は最も柔軟性のある形式です。デバイスが ASTC HDR をサポートしていない場合、テクスチャはランタイムに RGB9e5 または RGBA Half に解凍されますが、これはアルファチャンネルの使用状況によって異なります。
ASTC HDR に対応していないデバイスでは、Vulkan、Metal、OpenGL ES 3.0 を搭載したすべてのデバイスが RGB9e5 に対応しており、アルファチャンネルのないテクスチャに適しています。アルファチャンネルやさらに広い範囲のサポートが必要な場合は、RGBA Half を使用します。これは、RGB9e5 の 2 倍のメモリを必要とします。
アプリケーションを Google Play に配布する場合は、テクスチャ圧縮ターゲティングを使用することを推奨します。
サポートされているすべての形式の詳細については、サポートされるテクスチャ形式のリファレンス表を参照してください。