テクスチャタイプ
プロシージャルマテリアル

プラットフォーム別オーバーライドのためのテクスチャ圧縮形式

Unity は、テクスチャ (JPG、PNG、PSD、TGA など) をインポートするためのソースファイルとして多くの一般的な画像形式をサポートしています。しかし、これらの形式は、グラフィックスカードやモバイルデバイスなどの 3D グラフィックスハードウェアによるリアルタイムのレンダリングでは使用されません。3D グラフィックスハードウェアでは、高速テクスチャサンプリングに最適化された専用の形式でテクスチャを圧縮する必要があります。異なるプラットフォームとデバイスにはそれぞれ独自のフォーマットがあります。

デフォルトでは、テクスチャは選択したビルドターゲットに合わせて自動的に最適な形式に変換されます。変換されたテクスチャのみがビルドに含まれます。ソースのアセットファイルは、プロジェクトの Assets フォルダーに元の形式で残ります。ただし、ほとんどのプラットフォームでは、サポートするテクスチャ圧縮形式が複数あります。Unity には、プラットフォームごとに設定された特定のデフォルトフォーマットがありますが、ある状況ではデフォルトをオーバーライドして、いくつかのテクスチャに対して異なる圧縮フォーマットを選択することが必要な場合もあります (例えば、テクスチャを 1 つしかチャンネルを持たないマスクとして使用する場合、BC4 形式を使用して品質を維持しながらスペースを節約する方法を選択する場合もあります)。

各プラットフォームにカスタム設定を適用する場合は、テクスチャインポーター を使用してデフォルトオプションを設定し、それから Platform-specific overrides を使用してデフォルトを特定のプラットフォームに合わせてオーバーライドします。

各プラットフォームのテクスチャのデフォルト設定
各プラットフォームのテクスチャのデフォルト設定

以下は各プラットフォームで任意のカラーモデルを選んだ場合の、圧縮の品質に対する形式 (Format) のデフォルト値です。

プラットフォーム カラーモデル None Normal Quality (デフォルト) High Quality (高品質) Low quality (低品質、パフォーマンスは高い)
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 (デフォルトサブターゲット) RGB RGB 24 bit RGB Compressed ETC2 RGB Compressed ETC2 RGB Compressed ETC2
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
Tizen, Samsung TV RGB RGB 24 bit RGB Compressed ETC RGB Compressed ETC RGB Compressed ETC
RGBA RGBA 32 bit RGBA 16 bit RGBA 16 bit RGBA 16 bit

サポートされるすべての圧縮形式

下の表は、各プラットフォームで使用可能なテクスチャ圧縮形式のオプションと、結果として得られる圧縮ファイルサイズ (256 ピクセルの正方形の画像に基づく) を示しています。テクスチャ圧縮形式の選択は、ファイルサイズと画質のバランスによります。品質が高いほど、ファイルサイズは大きくなります。以下の説明で 256×256 ピクセルのゲーム内テクスチャの最終的なファイルサイズを参照してください。

ターゲットプラットフォームでサポートされていないテクスチャ圧縮形式を使用すると、テクスチャは RGBA 32 に解凍され、圧縮テクスチャと一緒にメモリに保存されます。このような状況が発生すると、テクスチャを解凍する時間が費やされ、テクスチャを 2 回保存するためにメモリがより消費されます。 さらに、すべてのプラットフォームはハードウェアが異なり、特定の圧縮形式で最も効率的に動作するように最適化されています。そのため、互換性のない形式を選択すると、ゲームのパフォーマンスに影響を与える可能性があります。下の表は、各圧縮形式をサポートするプラットフォームを示しています。

下の表に関するノート

  • RGB は赤、緑、青をさまざまな割合で加え、幅広い を表すカラーモデルです。

  • RGBA はアルファチャンネルを持つ RGB の一種で、ブレンドと透明度の変更が可能です。

  • Crunch compression is a lossy compression format (meaning that parts of the data are lost during compression) on top of DXT Texture compression. Textures are decompressed to DXT on the CPU, and then uploaded to the GPU at runtime. Crunch compression helps the Texture use the lowest possible amount of space on disk and for downloads. Crunch Textures can take a long time to compress, but decompression at runtime is very fast.

テクスチャ圧縮形式 説明 サイズ
(256x256 ピクセルのテクスチャに対する)
Platform Support
RGB Compressed DXT1 圧縮され正規化された unsigned int RGB テクスチャ。 32KB (4 ビット/ピクセル) Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL
RGBA Compressed DXT5 圧縮され正規化された unsigned int の RGBA テクスチャ。8 ビット/ピクセル。 64KB (8 ビット/ピクセル) Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL
RGB Crunched DXT1 Similar to RGB Compressed DXT1, but compressed using crunch compression. See Notes, above, for more on crunch compression. テクスチャ内のコンテンツの複雑さによって異なります。 Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL
RGBA Crunched DXT5 Similar to RGBA Crunched DXT5, but compressed using crunch compression. See Notes, above, for more on crunch compression. テクスチャ内のコンテンツの複雑さによって異なります。 Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL
RGB Compressed BC6H 圧縮され正規化された unsigned float/ハイダイナミックレンジ (HDR) RGB テクスチャ。 64KB (8 ビット/ピクセル) Windows Direct3D 11: OpenGL 4, Linux.
Note: BC6H Textures are uncompressed at runtime to RGBA half on the following platform configurations:
Windows with Direct3D 9
macOS with OpenGL
Platforms with Direct3D 10 Shader Model 4 or OpenGL 3 GPUs
RGB(A) Compressed BC7 圧縮され正規化された unsigned int の RGB または RGBA テクスチャ。 64KB (8 ビット/ピクセル) Windows Direct3D 11: OpenGL 4, Linux
Note: BC7 Textures are uncompressed at runtime to RGBA 32bits on the following platform configurations:
Windows with Direct3D 9
macOS with OpenGL
Platforms with Direct3D 10 Shader Model 4
Platforms with OpenGL 3 GPUs.
RGB Compressed ETC Compressed RGB Texture.
Note: ETC1 is supported by all OpenGL ES 2.0 GPUs. It does not support alpha.
32KB (4 ビット/ピクセル) Android, Tizen, Samsung TV
RGB Compressed ETC2 Compressed RGB Texture. This is the default Texture compression format for Android projects.
Note: ETC2 is part of OpenGL ES 3.0. It does not support alpha. On Android platforms that don’t support ETC2, the Texture is uncompressed at runtime to RGB 24 bit.
32KB (4 ビット/ピクセル) Android (OpenGL ES 3.0)
Note: On Android mobiles that don’t support ETC2, the Texture is uncompressed at runtime to RGBA32
RGBA Compressed ETC2 Compressed RGBA Texture. 8 bits per pixel (64KB for a 256x256 Texture). This is the default Texture compression format for Android projects.
Note: ETC2 is part of OpenGL ES 3.0. It does not support alpha. On Android platforms that don’t support ETC2, the Texture are uncompressed at runtime to RGBA 32 bit.
64KB (8 ビット/ピクセル) Android (OpenGL ES 3.0)
Note: On Android mobiles that don’t support ETC2, the Texture is uncompressed at runtime to RGBA32
RGB Compressed ASTC 圧縮された RGB テクスチャのさまざまなブロックサイズ 12x12: 0.89 ビット/ピクセル (256x256 テクスチャでは 7.56KB)
10x10: 1.28 ビット/ピクセル (256x256 テクスチャでは 10.56KB)
8x8: 2 ビット/ピクセル (256x256 テクスチャでは 16KB);
6x6: 3.56 ビット/ピクセル (256x256 テクスチャでは 28.89KB)
5x5: 5.12 ビット/ピクセル (256x256 テクスチャでは 42.25KB)
4x4: 8 ビット/ピクセル (256x256 テクスチャでは 64KB)
tvOS (all), iOS (A8), Android (PowerVR 6XT, Mali T600 series, Adreno 400 series, Tegra K1)
RGBA Compressed ASTC 圧縮された RGBA テクスチャのさまざまなブロックサイズ 12x12: 0.89 ビット/ピクセル (256x256 テクスチャでは 7744 バイト)
10x10: 1.28 ビット/ピクセル (256x256 テクスチャでは 10816 バイト)
8x8: 2 ビット/ピクセル (256x256 テクスチャでは 16KB);
6x6: 3.56 ビット/ピクセル (256x256 テクスチャでは 29584 バイト)
5x5: 5.12 ビット/ピクセル (256x256 テクスチャでは 43264 バイト)
4x4: 8 ビット/ピクセル (256x256 テクスチャでは 64KB)
tvOS (all), iOS (A8), Android (PowerVR 6XT, Mali T600 series, Adreno 400 series, Tegra K1)
RGB Compressed PVRTC 2 bits 高圧縮 RGB テクスチャ。低品質だがサイズが小さい。その結果、パフォーマンスが高い。 16KB (2 ビット/ピクセル) Android (PowerVR), iOS, tvOS
RGBA Compressed PVRTC 2 bits 高圧縮 RGBA テクスチャ。低品質だがサイズが小さい。その結果、パフォーマンスが高い。 16KB (2 ビット/ピクセル) Android (PowerVR), iOS, tvOS
RGB Compressed PVRTC 4 bits 圧縮された RGB テクスチャ。高品質テクスチャ (特にカラーデータで)。ただし、圧縮に長く時間がかかる。 32KB (4 ビット/ピクセル) Android (PowerVR), iOS, tvOS
RGBA Compressed PVRTC 4 bits 圧縮された RGB テクスチャ。高品質テクスチャ (特にカラーデータで)。ただし、圧縮に長く時間がかかる。 32KB (4 ビット/ピクセル) Android (PowerVR), iOS, tvOS
RGB Compressed ATC 圧縮された RGB テクスチャ 32KB (4 ビット/ピクセル) Android (Qualcomm - Adreno), iOS, tvOS
RGBA Compressed ATC 圧縮された RGBA テクスチャ 64KB (8 ビット/ピクセル) Android (Qualcomm - Adreno), iOS, tvOS
RGB 16 bit アルファなしの 65000 色。圧縮された形式よりもメモリを消費しますが、UI やグラデーションのないくっきりとしたテクスチャにより適しています。 128KB (16 ビット/ピクセル) すべてのプラットフォーム
RGB 24 bit アルファなしのトゥルーカラー 192KB (24 ビット/ピクセル) すべてのプラットフォーム
Alpha 8 カラーなしの高品質アルファチャンネル 64KB (8 ビット/ピクセル) すべてのプラットフォーム
RGBA 16 bit 低品質のトゥルーカラー。これは、アルファチャンネルのあるテクスチャでデフォルトの圧縮です。 128KB (16 ビット/ピクセル) すべてのプラットフォーム
RGBA 32 bit アルファありのトゥルーカラー。これは、アルファチャンネルのあるテクスチャで最も高品質の圧縮です。 256KB (32 ビット/ピクセル) すべてのプラットフォーム

DDS ファイルからテクスチャをインポートできますが、DXT か BC 圧縮形式、または、解凍したピクセル形式のみがサポートされます。

Android に関するノート

特定のハードウェア (Tegra など) をターゲットにしない限り、ETC2 圧縮は Android にとって最も効率的なオプションで、品質とファイルサイズの最適なバランスを提供します (メモリサイズ要件を満たしている場合)。アルファチャンネルが必要な場合は外部に保存したり、テクスチャファイルのサイズを小さくするのも良い方法です。

アルファチャネル を持つテクスチャには ETC1 を使うことができますが、ビルドが Android 用で、テクスチャが (Packing Tag を指定することによって) アトラスに置かれている場合にのみ使用できます。これを行うには、テクスチャの Compress using ETC1 チェックボックスにチェックします。Unity は結果として得られたアトラスをアルファチャンネルなしの 2 つのテクスチャに分割し、レンダリングパイプラインの最後の部分でそれらを結合します。

テクスチャにアルファチャンネルを保存するには、すべてのハードウェアベンダーがサポートする RGBA16 ビット圧縮を使用します。

テクスチャタイプ
プロシージャルマテリアル