Unity は、テクスチャ (JPG、PNG、PSD、TGA など) をインポートするためのソースファイルとして多くの一般的な画像形式をサポートしています。ただし、グラフィックスカードやモバイルデバイスなどの 3D グラフィックスハードウェアでは、リアルタイムのレンダリングでこれらの形式を使用しません。3D グラフィックスハードウェアでは、高速テクスチャサンプリングに最適化された専用の形式でテクスチャを圧縮する必要があります。様々なプラットフォームとデバイスにはそれぞれ独自のフォーマットがあります。
デフォルトでは、Unity エディターは自動的にテクスチャを最適な形式に変換して選択したビルドターゲットに一致させ、変換したテクスチャのみをビルドに加えます。ソースアセットファイルは、プロジェクトの Assets
フォルダーに元の形式のまま残ります。ただし、ほとんどのプラットフォームは、選択可能ないくつかのテクスチャ 圧縮形式をサポートしています。
Unity にはプラットフォームごとにデフォルトのフォーマットがありますが、それらをオーバーライドして一部のテクスチャに異なる圧縮形式を選択することができます (例えば、テクスチャをマスクとして使用する場合、チャンネル 1 つを使って、BC4 形式を使用してファイルサイズを削減し、品質を維持することもできます)。
このページには以下の情報が含まれています。
テクスチャのインポートに関する一般的な情報とオーバーライドの設定方法については、テクスチャのインポート設定 を参照してください。
このページでは、以下の概念を使用します。
以下は各プラットフォームで使用されるデフォルト形式を表しています。
プラットフォーム | カラーモデル | 圧縮なし | 標準品質 (デフォルト) | 高品質 | 低品質 (高パフォーマンス) |
---|---|---|---|---|---|
Windows、Linux、macOS、PS4、XBox One | RGB | RGB 24 bit | RGB Compressed DXT1 | RGB(A) Compressed BC7 | RGB Compressed DXT1 |
RGBA | RGBA 32 bit | RGBA Compressed DXT5 | RGB(A) Compressed BC7 | RGBA Compressed DXT5 | |
HDR | RGBA Half | RGB Compressed BC6H | RGB Compressed BC6H | RGB Compressed BC6H | |
WebGL | RGB | RGB 24 bit | RGB Compressed DXT1 | RGB Compressed DXT1 | RGB Compressed DXT1 |
RGBA | RGBA 32 bit | RGBA Compressed DXT5 | RGBA Compressed DXT5 | RGBA Compressed DXT5 | |
Android (ビルド設定で Don’t override (オーバーライドしない) が有効になっている場合のみ) | RGB | RGB 24 bit | RGB Compressed ETC | RGB Compressed ETC | RGB Compressed ETC |
RGBA | RGBA 32 bit | RGBA Compressed ETC2 | RGBA Compressed ETC2 | RGBA Compressed ETC2 | |
iOS | RGB | RGB 24 bit | RGB Compressed PVRTC 4 bits | RGB Compressed PVRTC 4 bits | RGB Compressed PVRTC 2 bits |
RGBA | RGBA 32 bit | RGBA Compressed PVRTC 4 bits | RGBA Compressed PVRTC 4 bits | RGBA Compressed PVRTC 2 bits | |
tvOS | RGB | RGB 24 bit | RGB Compressed ASTC 6x6 block | RGB Compressed ASTC 4x4 block | RGB Compressed ASTC 8x8 block |
RGBA | RGBA 32 bit | RGBA Compressed ASTC 6x6 block | RGBA Compressed ASTC 4x4 block | RGBA Compressed ASTC 8x8 block | |
デフォルト | RGBA | RGBA 32 bit | RGBA 16 bit | RGBA 16 bit | RGBA 16 bit |
下の表は、各プラットフォームで使用可能なテクスチャ圧縮形式のオプションと、結果として得られるディスクの圧縮ファイルサイズ (256 x 256 ピクセルの画像に基づく) を示しています。
テクスチャ圧縮形式の選択は、ファイルサイズ、品質、圧縮時間のバランスによります。品質が高いほどファイルサイズは大きくなります。最高のパフォーマンスを得るには、特にモバイルデバイスでは、アプリケーションがターゲットとするハードウェアがサポートするピクセルあたりのビット数が (その形式が十分な視覚的品質を提供する範囲で) 最も少ない形式を使用します。
プラットフォームごとにハードウェアが異なり、特定の圧縮形式で最も効率的に動作するように最適化されています。ターゲットプラットフォームがサポートするテクスチャ圧縮形式を使用する場合、GPU はそれを直接使用でき、プラットフォームはテクスチャをサポートされている形式に解凍するためにリソースをまったく消費しません。これにより、アプリケーションのパフォーマンスを向上させることができます。
ターゲットプラットフォームでサポートされていないテクスチャ 圧縮形式を使用する場合、テクスチャは (特に記載がない限り) RGBA 32 ビットに解凍され、圧縮されたテクスチャと一緒にメモリに格納されます。これにより、テクスチャの読み込み時間が長くなり、追加のメモリを使用します。つまり、互換性のない形式を選択すると、アプリケーションのパフォーマンスに影響を与える可能性があります。
以下の表は、各圧縮形式でサポートされているプラットフォームを示しています。
ノート: メモリ内サイズは 256 x 256 ピクセルのテクスチャに基づいています。
テクスチャ圧縮形式 | 説明 | メモリサイズ | Windows | Linux | Mac | PS4 | Xbox One | Android | iOS | tvOS | WebGL |
---|---|---|---|---|---|---|---|---|---|---|---|
RGB Compressed DXT1 | 圧縮され正規化された符号なし整数 RGB テクスチャ。 | 32KB / 4 bpp | 可 | 可 | 可 | 可 | 可 | 一部可 (1) | 不可 | 不可 | 一部可 (2) |
RGB Crunched DXT1 | RGB Compressed DXT1、追加クランチ圧縮を伴う。 | VBR | 可 | 可 | 可 | 可 | 可 | 一部可 (1) | 不可 | 不可 | 一部可 (2) |
RGBA Compressed DXT5 | 圧縮され正規化された符号なし整数 RGBA テクスチャ。 | 64KB / 8 bpp | 可 | 可 | 可 | 可 | 可 | 一部可 (1) | 不可 | 不可 | 一部可 (2) |
RGBA Crunched DXT5 | RGBA Compressed DXT5、追加クランチ圧縮を伴う。 | VBR | 可 | 可 | 可 | 可 | 可 | 一部可 (1) | 不可 | 不可 | 一部可 (2) |
RGB Compressed BC6H | 圧縮された符号なし Float/ハイダイナミックレンジ (HDR) RGB テクスチャ。 | 64KB / 8 bpp | 一部可 (3) | 可 | 一部可 (3) | 可 | 可 | 不可 | 不可 | 不可 | 不可 |
RGB(A) Compressed BC7 | 圧縮され正規化された unsigned int の RGB または RGBA テクスチャ。 | 64KB / 8 bpp | 一部可 (3) | 可 | 一部可 (3) | 可 | 可 | 不可 | 不可 | 不可 | 不可 |
RGB 16 bit | 非圧縮形式のアルファを伴わない 65536 色。圧縮された形式よりもメモリを消費しますが、UI やグラデーションのないくっきりとしたテクスチャにより適しています。 | 128KB / 16 bpp | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 |
RGB 24 bit | アルファなしのトゥルーカラー | 192KB / 24 bpp | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 |
RGB9e5 32 ビット共有指数浮動 Float | アルファチャンネルのない浮動小数点/ハイダイナミックレンジ (HDR) テクスチャ | 256 KB / 32 bpp | 可 | 可 | 可 | 可 | 可 | 一部可 (4) | 一部可 (4) | 一部可 (4) | 一部可 (4) |
Alpha 8 | 高品質の非圧縮アルファチャンネル | 64KB / 8 bpp | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 |
R 8 | 高品質の非圧縮シングルチャンネルテクスチャ | 64KB / 8 bpp | 可 | 可 | 可 | 可 | 可 | 一部可 (5) | 一部可 (5) | 一部可 (5) | 一部可 (5) |
R 16 ビット | 超高品質の非圧縮シングルチャンネルテクスチャ | 128KB / 16 bpp | 可 | 可 | 可 | 可 | 可 | 一部可 (6) | 一部可 (6) | 一部可 (6) | 不可 |
RGBA 16 bit | 低品質のトゥルーカラー | 128KB / 16 bpp | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 |
RGBA 32 bit | アルファ付きトゥルーカラー | 256KB / 32 bpp | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 | 可 |
RGBA Half | 半精度浮動小数点/ハイダイナミックレンジ (HDR) RGBA 形式 | 512KB / 64bpp | 可 | 可 | 可 | 可 | 可 | 一部可 (7) | 一部可 (7) | 一部可 (7) | 一部可 (7) |
ノート:
DDS ファイルからテクスチャをインポートできますが、DXT か BC 圧縮形式、または、解凍したピクセル形式のみがサポートされます。
下の表に示された形式は、Android、iOS、tvOS、WebGL でのみサポートされています。
ノート: サイズは 256 x 256 ピクセルのテクスチャに基づいています。
テクスチャ圧縮形式 | 説明 | サイズ | Android | iOS | tvOS | WebGL |
---|---|---|---|---|---|---|
RGB Compressed ETC | 圧縮 RGB テクスチャ。この形式は、すべての OpenGL ES 2.0 GPU でサポートされています。 | 32KB / 4 bpp | 可 | 可 | 可 | 一部可 (1) |
RGB Crunched ETC | RGB Compressed ETC、追加クランチ圧縮を伴う。 | VBR | 可 | 可 | 可 | 一部可 (1) |
RGB Compressed ETC2 | 圧縮された RGB テクスチャ | 32KB / 4 bpp | 一部可 (2) | 一部可 (3) | 一部可 (3) | 一部可 (1) |
RGBA Compressed ETC2 | 圧縮 RGBA テクスチャ。この形式は、すべての OpenGL ES 3.0 GPU でサポートされています。 | 64KB / 8 bpp | 一部可 (2) | 一部可 (3) | 一部可 (3) | 一部可 (1) |
RGBA Crunched ETC2 | RGBA Compressed ETC2、追加クランチ圧縮を伴う。 | VBR | 一部可 (2) | 一部可 (3) | 一部可 (3) | 一部可 (1) |
RGB + 1 ビット Alpha Compressed ETC2 4 ビット | アルファチャンネルが完全に不透明または完全に透明に制限された圧縮 RGBA テクスチャ。 | 32KB / 4 bpp | 一部可 (2) | 一部可 (3) | 一部可 (3) | 一部可 (1) |
RG Compressed EAC 8 ビット | 高品質の圧縮 RG (2 チャンネル) テクスチャ | 64KB / 8 bpp | 一部可 (2) | 一部可 (3) | 一部可 (3) | 一部可 (1) |
RG Compressed EAC 4 ビット | 高品質の圧縮 R (シングルチャンネル) テクスチャ | 32KB / 4 bpp | 一部可 (2) | 一部可 (3) | 一部可 (3) | 一部可 (1) |
RGB(A) Compressed ASTC | 可変ブロックサイズの圧縮された RGB または RGBA テクスチャ。この形式は、すべての OpenGL ES 3.1 と Vulkan GPU でサポートされています。 | 12x12: 7744 バイト / 0.89 bpp 10x10: 10816 バイト / 1.28 bpp 8x8: 16KB / 2 bpp 6x6: 29584 バイト / 3.56 bpp 5x5: 43264 バイト / 5.12 bpp 4x4: 64KB / 8 bpp |
一部可 (4) | 一部可 (5) | 可 | 一部可 (6) |
RGB(A) Compressed ASTC HDR | 可変ブロックサイズの圧縮された符号なし Float/ハイダイナミックレンジ (HDR) RGB または RGBA テクスチャ | 12x12: 7744 バイト / 0.89 bpp 10x10: 10816 バイト / 1.28 bpp 8x8: 16KB / 2 bpp 6x6: 29584 バイト / 3.56 bpp 5x5: 43264 バイト / 5.12 bpp 4x4: 64KB / 8 bpp |
一部可 (7) | 不可 | 不可 | 不可 |
RGB Compressed PVRTC 2 ビット (8) | 高圧縮 RGB テクスチャ | 16KB / 2 bpp | 一部可 (9) | 可 | 可 | 不可 |
RGBA Compressed PVRTC 2 bits | 高圧縮 RGBA テクスチャ | 16KB / 2 bpp | 一部可 (9) | 可 | 可 | 不可 |
RGB Compressed PVRTC 4 bits | 圧縮された RGB テクスチャ | 32KB / 4 bpp | 一部可 (9) | 可 | 可 | 不可 |
RGBA Compressed PVRTC 4 bits | 圧縮された RGBA テクスチャ | 32KB / 4 bpp | 一部可 (9) | 可 | 可 | 不可 |
ノート:
幅広い互換性のために、デフォルトのテクスチャ圧縮設定 (PVRTC) が選択されます。 アプリケーションに OpenGL ES 2 サポートが含まれていない場合は、ASTC 形式のうち 1 つを選択します。ASTC 形式は品質と柔軟性が高く、圧縮は PVRTC よりも高速です。
Unity は Metal をサポートする tvOS デバイスのみをサポートします。ASTC はこのプラットフォームのデフォルトのテクスチャ圧縮です。手動で OpenGL ES 2 を追加する場合は、テクスチャ圧縮を PVRTC か ETC のいずれかに変更して、ランタイムのテクスチャ解凍を避けてください。
アプリケーションが特定のハードウェア (Nvidia Tegra や Imagination PowerVR など) をターゲットにしている場合を除いて、いくつかの圧縮形式と非圧縮形式のいずれかを選択する必要があります。これらには異なる利点や欠点があります。
フォーマット | 説明 | サポート |
---|---|---|
ASTC | 最も柔軟な形式です。さまざまなブロックサイズを使用してファイルサイズと結果の品質を微調整できます。 | Vulkan または OpenGL ES 3.1 を実行するすべてのデバイス、および OpenGL ES 3.0 を実行する一部のデバイスでサポートされます。 |
ETC2/EAC | OpenGL ES 3.0 の標準テクスチャ圧縮形式。結果の画像品質はかなり高く、1 から 4 コンポーネントのテクスチャデータをサポートします。OpenGL ES 2 デバイスではサポートされていないため、テクスチャはランタイムに ETC2 fallback で指定された形式に解凍されます。 | OpenGL ES 3.0 でサポートされています。 OpenGL ES 2 ではサポートされません。 |
ETC | ブロックベースのテクスチャ圧縮形式。画像は 4×4 のブロックに分割され、各ブロックは固定ビット数でエンコードされます。欠点は、アルファチャンネルが直接サポートされていないことです。そのため、透明度情報を持つテクスチャには適していません。Unity は、テクスチャアトラスに配置された アルファチャンネル でテクスチャを自動的に処理する方法を提供します (これは、スプライトのパッキングタグを使用して指定できます)。 これを有効にするには、スプライトアトラス をインポートするときに、テクスチャの Split Alpha Channel オプションを有効にします。Unity は、結果のアトラスを 2 つのテクスチャに分割します。1 つは RGB データを持ち、もう 1 つは 3 つすべての (RGB) チャンネルに複製されたアルファチャンネルデータを持ちます。その後、それらをレンダリングパイプラインの最後の部分で結合します。 |
すべての Android デバイスでサポートされます。 |
RGBA 16 bit | アルファチャンネルを持つ非圧縮形式。ETC2 の 2 倍のメモリが必要です。これは、強いグラデーションのないピクセルパーフェクトな UI のための一般的な形式です。 | すべてのデバイスでサポートされます。 |
RGBA 32 bit | 最高品質を提供し、アルファチャンネルをサポートする非圧縮形式。 ETC2 の 4 倍のメモリが必要です。これは、最高の見栄えのピクセルパーフェクトな UI のための形式です。 | すべてのデバイスでサポートされます。 |
ハイダイナミックレンジ (HDR) テクスチャの場合は、以下の形式のいずれかを選択します。
異なるハードウェアをターゲットとする複数の Android パッケージ (APK) を公開できます。例えば、2 つの別々のAPK (1 つは OpenGL ES 3.0 以降をサポートするデバイス、もう 1 つは OpenGL ES 2.0 のみをサポートするデバイスをターゲットとする) を公開するには、以下の手順に従います。
1. OpenGL ES 3 をターゲットとする APK をビルドします。
2. OpenGL ES 2 をターゲットとする別の APK をビルドします。
3. これらの APK を Google Play ストアに公開します。
ユーザーがアプリケーションをダウンロードすると、Google Play ストアはそのデバイスに最も関連性の高い APK を自動的にインストールします。
複数の APK ファイルの公開に関する詳細は、以下の Android Developer ドキュメントを参照してください。