このページでは、特に Android に関して、テクスチャ オーバライド の詳細を説明しています。テクスチャオーバーライドの一般的な説明は、こちらを参照してください。
このページの情報は読者が DXT と ETC のテクスチャ圧縮、OpenGL ES と Android 開発の実用的な知識を持っているという前提に基づいています。
テクスチャ圧縮と OpenGL ES に関する詳細な情報は以下のページを参照してください。
Format | 説明 |
---|---|
RGB Compressed DXT1 | 圧縮 RGB テクスチャ。 Nvidia Tegra が対応。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGB Crunched DXT1 | 圧縮 RGB テクスチャー。Nvidia Tegra が対応。Crunch 圧縮は、DXT テクスチャ圧縮上で使用できる損失のある圧縮形式です。テクスチャは CPU で DXT1 に解凍され、ランタイムに GPU に読み込まれます。Crunch 圧縮は、通常の DXT1 圧縮よりもより小さくテクスチャを圧縮できます。Crunch テクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。4 ビット/ピクセル (出力サイズはテクスチャによって異なります。256x256 のテクスチャで 1 KB から)。 |
RGBA Compressed DXT5 | 圧縮 RGBA テクスチャ。 Nvidia Tegra が対応。8 ビット/ピクセル (256x256 のテクスチャで 62 KB)。 |
RGBA Crunched DXT5 | 圧縮 RGBA テクスチャ。Nvidia Tegra が対応。Crunch 圧縮は、DXT テクスチャ圧縮上で使用できる損失のある圧縮形式です。テクスチャは CPU で DXT5 に解凍され、ランタイムに GPU に読み込まれます。Crunch 圧縮は、通常の DXT5 圧縮よりも著しく小さい、ただし、低品質のテクスチャを作成します。Crunch テクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。8 ビット/ピクセル (出力サイズはテクスチャによって異なります。256x256 のテクスチャで 1 KB から。 |
RGB Compressed ETC 4 bits | 圧縮 RGB テクスチャ。Unity の Android 用プロジェクトのデフォルトのテクスチャ形式。 ETC_RGB4 は OpenGL ES 2.0 の一部であり、全ての OpenGL ES 2.0 GPU が対応しています。アルファには非対応です。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGB Crunched ETC | 圧縮 RGBA テクスチャ。Nvidia Tegra が対応。Crunch 圧縮は、DXT テクスチャ圧縮上で使用できる損失のある圧縮形式です。テクスチャは CPU で DXT5 に解凍され、ランタイムに GPU に読み込まれます。Crunch 圧縮は、通常の DXT5 圧縮よりも著しく小さい、ただし、低品質のテクスチャを作成します。Crunch テクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。8 ビット/ピクセル (出力サイズはテクスチャによって異なります。256x256 のテクスチャで 1 KB から)。 |
RGB Compressed ETC2 4 bits | 圧縮 RGB テクスチャ。ETC2 は OpenGL ES 3.0 の一部であり、全ての OpenGL ES 3.0 GPU が対応。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGB + 1-bit Alpha Compressed ETC2 4 bits | 1 ビットパンチスルーアルファを持つ圧縮 RGB テクスチャ。ETC2 は OpenGL ES 3.0 の一部であり、全ての OpenGL ES 3.0 GPU が対応。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGBA Compressed ETC2 8 bits | 圧縮 RGBA テクスチャ。 全ての OpenGL ES 3.0 GPU が対応。8 ビット/ピクセル (256x256 のテクスチャーで 62 KB)。 |
RGBA Crunched ETC2 | 圧縮 RGBA テクスチャ。Crunch 圧縮は、ETC テクスチャ圧縮上で使用できる損失のある圧縮形式です。テクスチャは CPU で ETC2_RGBA8 に解凍され、ランタイムに GPU に読み込まれます。Crunch 圧縮は、通常の ETC2_RGBA8 圧縮よりも著しく小さい、ただし、低品質のテクスチャを作成します。Crunch テクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍は高速です。全ての OpenGL ES 3.0 GPU が対応。8 ビット/ピクセル (出力サイズはテクスチャによって異なります。256x256 のテクスチャで 1 KB から)。 |
RGB Compressed PVRTC 2 bits | 圧縮 RGB テクスチャ。 Imagination PowerVR GPU が対応。2 ビット/ピクセル (256x256 のテクスチャで 16 KB)。 |
RGBA Compressed PVRTC 2 bits | 圧縮 RGBA テクスチャ。Imagination PowerVR GPU が対応。2 ビット/ピクセル (256x256 のテクスチャで 16 KB)。 |
RGB Compressed PVRTC 4 bits | 圧縮 RGB テクスチャ。 Imagination PowerVR GPU が対応。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGBA Compressed PVRTC 4 bits | 圧縮 RGBA テクスチャ。Imagination PowerVR GPU が対応。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGB Compressed ATC 4 bits | 圧縮 RGB テクスチャ。Qualcomm Snapdragon が対応。4 ビット/ピクセル (256x256 のテクスチャで 32 KB)。 |
RGBA Compressed ATC 8 bits | 圧縮 RGBA テクスチャ。Qualcomm Snapdragon が対応。8 ビット/ピクセル (256x256 のテクスチャで 64 KB)。 |
RGB Compressed ASTC 4x4 block RGB Compressed ASTC 5x5 block RGB Compressed ASTC 6x6 block RGB Compressed ASTC 8x8 block RGB Compressed ASTC 10x10 block RGB Compressed ASTC 12x12 block |
圧縮 RGB テクスチャ。OpenGL ES 3.2、OpenGL ES 3.1+AEP GPU のすべてと、OpenGL ES 3.0 GPU の一部が対応。この圧縮形式は固定の 128 ビットブロックサイズを使用します。ピクセルブロックサイズ (4x4 から 12x12) によって、各ピクセルに 8 から 0.89 ビットを利用します。圧縮テクスチャのサイズは256x256 のテクスチャで 64KB (4x4 ブロック、最高品質) から、256x256 のテクスチャで 7.6KB (12x12 ブロック、最高圧縮率) 。 |
RGBA Compressed ASTC 4x4 block RGBA Compressed ASTC 5x5 block RGBA Compressed ASTC 6x6 block RGBA Compressed ASTC 8x8 block RGBA Compressed ASTC 10x10 block RGBA Compressed ASTC 12x12 block |
圧縮 RGBA テクスチャ。OpenGL ES 3.2、OpenGL ES 3.1+AEP GPU のすべてと、OpenGL ES 3.0 GPU の一部が対応。この圧縮形式は固定の 128 ビットブロックサイズを使用します。ピクセルブロックサイズ (4x4 から 12x12) によって、各ピクセルに 8 から 0.89 ビットを利用します。圧縮テクスチャのサイズは256x256 のテクスチャで 64 KB (4x4 ブロック、最高品質) から、256x256 のテクスチャで 7.6 KB (12x12 ブロック、最高圧縮率) 。 |
RGB 16 bit | アルファなしの 65000 色。圧縮された形式よりもメモリを消費しますが、UI やグラデーションのないくっきりとしたテクスチャにより適しています。256x256 のテクスチャで 128 KB。 |
RGB 24 bit | アルファ なしのトゥルーカラー。256x256 テクスチャで 192 KB。 |
Alpha 8 bit | カラーなしの高品質アルファチャンネル。256x256 テクスチャで 64 KB。 |
RGBA 16 bit | 低品質のトゥルーカラー。アルファチャンネルありのデフォルトのテクスチャ圧縮。256x256 テクスチャで 12 KB。 |
RGBA 32 bit | アルファチャンネルありのトゥルーカラー。アルファチャンネルありのテクスチャ圧縮では最高品質。256x256 テクスチャで 256 KB。 |
Compression quality | パフォーマンスを最速にしたい場合は Fast、画像を最高質にしたい場合は Best、その 2 つの中間を取りたい場合は Normal を選択します。 |
使用しているテクスチャ圧縮形式に対応していないデバイスにアプリケーションをインストールする場合、Unity は、アプリケーションの実行時にテクスチャを RGBA 32 に解凍し、圧縮されたテクスチャと共にデバイスのメモリに保存します。これは、Unity がテクスチャを解凍し、使用するテクスチャの 2 つのバージョン (圧縮と非圧縮) を保存する必要があるため、ロード時間が長くなりメモリ使用率が高くなる原因となります。これは読み込み時間の増加とメモリ使用量の増加につながります。これは特に古い、遅いデバイスでのレンダリングパフォーマンスに大きな影響を与える場合があります。
Nvidia Tegra のような特定のハードウェア向けである場合以外は ETC2 圧縮を使用します。ETC2 圧縮はアルファチャンネルがある場合でも無い場合でも、対応します。そして、すべての OpenGL ES 3 デバイスにサポートされています。ソフトウェアの解凍を避けるには、Android Player 設定の Graphics API リストから OpenGL ES 2 を削除して、最低のグラフィックス API を OpenGL ES 3 に設定し、Minimum API Level を 18 以上に設定します。
OpenGL ES 2 と OpenGL ES 3 デバイスをターゲットにするには、2 つの異なる APK を作成します。最初に上記のように OpenGL ES 3 をターゲットとする APK を構築し、次に Player 設定の Graphics API セクションで OpenGL ES 2 と Vulcan を削除して OpenGL ES 2 をターゲットとする APK を構築します。それから、これら両方の APK を Google Play Store に公開できます。ユーザーがアプリケーションをダウンロードすると、Google Play Store は自動的にデバイスに最も適切な APK をインストールします。複数の APK ファイルの公開についての詳細は、Android Developer ドキュメントの Publishing Multiple APKs と Google Play Store APK filtering を参照してください。
OpenGL ES 2 をターゲットとする APK を構築するときは、ETC1 テクスチャ圧縮を使用します。
OpenGL ES2 をターゲットにした APK のテクスチャ圧縮形式は ETC1 です。Unity は Alpha を持つテクスチャに ETC1 を使用できます。ただし、それらはパッキングタグを指定することによって アトラス に含まれ、ビルドは Android 用です。これを行うには、テクスチャの Compress using ETC1 チェックボックスをオンにします。内部で Unity は結果のアトラスをそれぞれがアルファなしの 2 つのテクスチャに分割し、レンダリングパイプラインの最後の部分でそれらを結合します。
どうしてもテクスチャにアルファチャンネルを保存したい場合は、RGBA16 ビットがすべてのハードウェアベンダーによってサポートされている圧縮形式です。
2017–09–18 限られた 編集レビュー で修正されたページ
Unity 2017.1 のアップデート機能
Crunch 圧縮形式は Unity 2017.3 で更新NewIn20173