テクスチャサイズ、色空間、および圧縮

Tutorial

·

intermediate

·

+0XP

·

15 mins

·

Unity Technologies

テクスチャサイズ、色空間、および圧縮

このチュートリアルでは、正しいテクスチャサイズ、色空間、圧縮を選択するとどのようにパフォーマンスが向上するかを説明します。

Languages available:

1. 概要

テクスチャサイズ、色空間、圧縮は、いずれもゲームのパフォーマンスに影響を与えます。

お勧めの方法は、目指す品質を達成するのに十分な大きさのテクスチャを作成することですが、大きくなりすぎないように注意してください。また、多くのメッシュ間で共有される複数のテクスチャを含む大きなテクスチャアトラスを使用すると良いでしょう。

2. テクスチャサイズ

テクスチャはそれぞれサイズを変えることができます。ディテールが必要ないテクスチャのサイズを縮小しておけば、帯域幅の削減に役立ちます。たとえば、ディフューズテクスチャは 1024x1024 に設定し、関連するラフネスマップまたはメタリックマップは 512x512 に設定できます。

テクスチャのサイズをよく選んで、縮小させていくことに力を尽くしてみましょう。そして、終えた後は常にビジュアルクオリティーが低下していないかどうかは確認するようにしましょう。

3. テクスチャの色空間

Adobe Photoshop や Substance Painter などのほとんどのテクスチャリングソフトウェアは、sRGB 色空間を使用することでテクスチャを適切に処理し、エクスポートすることができます。

ディフューズテクスチャは sRGB 色空間で使用することをお勧めします。色として処理されないテクスチャは、sRGB 色空間に含めてはなりません。そのようなテクスチャの例としてはメタリックマップ、ラフネスマップ、法線マップなどがあります。これらのマップは色ではなく、データとして使用されるからです。こういったマップで sRGB を使用すると、マテリアルのビジュアルが不適切な形で表れることになります。

注:ラフネスマップ、鏡面反射マップ、法線マップなどに対しては、「Inspector」ウィンドウの「sRGB (Color Texture)」設定の隣にあるチェックボックスはオンにしないでください。

次のスクリーンショットは、sRGB がテクスチャに不適切に適用された場合にどうなるかを示しています。

7bd81157-8d2e-4f4e-9e0f-ec359b387a89_image.png

4. テクスチャ圧縮

テクスチャ圧縮は、テクスチャのデータサイズを縮小する一方で、ビジュアルクオリティーを維持するために適用される画像圧縮機能です。

一般的に、TGA や PNG などの形式を使用してテクスチャをエクスポートします。これらの形式は使いやすく、主要な画像処理ソフトウェアプログラムでもサポートされていますが、最終的なレンダリングに使用しないでください。専用の画像形式と比較して、アクセスとサンプリングが低速になるためです。Android には、Adaptive Scalable Texture Compression (ASTC)、Ericsson Texture Compression (ETC) 1、ETC2 などのいくつかのオプションが用意されています。

ARM が生み出した ASTC テクノロジを使用することを推奨します。

  • ASTC は、多くのメモリを必要とすることなく、ETC よりも優れた品質を実現します。
  • ASTC は ETC よりもエンコードに時間がかかり、ゲームパッケージングプロセスにより長い時間がかかる場合があります。このことが問題になる場合は、ゲームの最終パッケージングで ASTC を使用すると良いでしょう。
  • ASTC ではブロックサイズを設定できるため、品質をさらに細かく制御できます。ブロックサイズに対して最適な初期値というものは存在しませんが、開始点としては 5x5 または 6x6 に設定するのが適しています。

ゲームをすばやく展開する必要がある場合は、ETC を使用して開発した方が望ましい場合があります。高速の圧縮設定で ASTC を使用して、展開時間の延長を回避することもできます。エンコーディング時は、速度、品質、サイズの間にいわゆるトレードオフの関係性が存在します。最終的なビルドにとって、ASTC はビジュアルクオリティーとファイルサイズの点で最適なオプションです。

ゲームをパッケージングする際には、Unity によってテクスチャ圧縮が処理されますが、処理方法を ASTC と ETC から選択できます。

次のスクリーンショットは、Unity での Android パッケージのビルド時にどこで ASTC を選択するべきかを示しています。

e60fb0d0-892f-4b65-8d2a-d51c8193f774_image.png

次の画像は、ETC 圧縮と ASTC 圧縮を使用した場合の品質とファイルサイズを比較したものです。

f0a97b32-2f19-4f9c-a94f-f2f56f8252dd_image.png

5. まとめ

2D アセットはモバイルアプリケーションのパフォーマンスに大きな影響を与えます。テクスチャを処理する際は、サイズ、色空間、圧縮について細かく検討することが重要です。次のチュートリアルでは、テクスチャアトラスを使用して画像をまとめるメリットについて説明します。

Complete this tutorial