ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

テクスチャのフォーマットについて

UE4内でのテクスチャの各種フォーマットについて解説します。
テクスチャの品質を高めたい場合は知っておく必要があります。

主な圧縮フォーマット


UE4で設定できる圧縮フォーマットのうち、エフェクトアーティストが利用する主なものは以下になると思います。

TC Default (DXT1)

 4x4ブロックごとに圧縮する方式。
 RGBのみでアルファチャンネルなし。抜き色指定のみ対応。
 テクスチャエディタのデフォルト設定が「TC Default」ですが、これはインポート時にテクスチャの内容から自動判別して圧縮フォーマットが決まるようです。
 テクスチャにアルファチャンネルが無ければDXT1になります。

TC Default (DXT5)

 DXT1にアルファチャンネルが追加されたもの。
 インポートしたテクスチャのアルファチャンネルがある場合はDXT5になります。
 ポイントは、アルファ情報は4x4ブロック圧縮ではなく8諧調を利用できる方式なため若干綺麗な点。
 つまりカラー用テクスチャとアルファ用テクスチャを別々に用意する場合に、どちらもDXT1にするとDXT51枚の場合より若干劣化する結果になる訳ですね。
 もしくは、アルファ用テクスチャは次のBC4を利用すれば良い訳です。

TC Alpha (BC4)

 Rチャンネルのみのグレースケール。DXT5のαと同じ8諧調方式。
 ただしアルファ用ということでsRGBにチェックを入れられないため、カラー情報として利用したい場合にガンマ補正が行われない点に注意が必要です。
 (エフェクト用のテクスチャはモノクロの場合が多いので、BC4でガンマ補正を行うようsRGBにチェックできるとありがたいのですが、sRGBフラグに対応したフォーマットしかチェックを入れられない仕様ということでしょうか)

TC Grayscale

 Rチャンネルのみのグレースケール。未圧縮。

TC Editor Icon

 これ、まだ実際に使っていません。
 ドット絵アイコンのような絵柄には向いてそうですが、どうなんでしょか?中身がよく分かりませんが。。
 というか劣化しないのでRGB未圧縮?
 今後調べて何か分かったら追記したいと思います。

 

さて、どのフォーマットを指定するかは使用メモリサイズ(1pixelあたりのbit数)を考慮して、品質を踏まえつつ吟味する必要があります。
(下記の公式マニュアルを参照してください)

 公式マニュアル:テクスチャのサポートと設定 | 圧縮テクスチャメモリ要件

将来的にはエフェクト用のテクスチャもHDRフォーマットが利用されて高輝度な値を設定するようになっていくかも知れませんが、メモリサイズをかなり食うでしょうから今はまだ現実的じゃない感じでしょうか‥

そもそも、Photoshopでも8bit以上の画像を作成する機能をもっと充実させて欲しいところです。

32bitモードにすると色調補正やフィルタで扱えないものが増えて困るのもありますが、何よりこのご時世にカラースライダが0~255のタイプしか指定できないというのはちょっとあり得ない気がします。

DXT圧縮についてはウェブテクノロジさんのサイトで非常に丁寧に解説されています。

DXTC(S3TC)圧縮アルゴリズムとは?~前編~
DXTC(S3TC)圧縮アルゴリズムとは?~後編~

次世代圧縮フォーマットBC7について


DXT5(BC3)と同じメモリサイズで見違えるほど綺麗なフォーマットが存在します。
それがBC7です。

エフェクトのテクスチャは繊細なグラデーションを扱うことが多いため、DXT1やDXT5ではグラデーションがとても汚くて困る場面がよくあります。
(それ以上に1チャンネル8bit=256諧調から脱した時代が早く到来して欲しいですが)

テクスチャ解像度が高かったり、ゲーム中に画面にアップで映りさえしなければ気にならなかったりはしますが、綺麗なフォーマットがあるならぜひ使いたい!訳です。

しかしBC7はミップマップやアルファの品質などクリアするべき案件があるようで、まだ発展途上であるという話です。。
MicrosoftIntelNVIDIAな方々に期待‥!

●BC7の美しさを実際に手元で試してみた記事が下記になります。

BC7を試してみようとしてみた ※こちらはうまくいかなかった記事です
画像をBC7に変換してみた ※こちらはうまくいった記事です

●ウェブテクノロジさんによる詳しい解説はこちら。

DirectX 11の圧縮フォーマットBC1~BC7について(前編)
DirectX 11の圧縮フォーマットBC1~BC7について(後編)

●また、同人サークル「CUBETYPE」さまのHPにてBC7についての記事があります。

CUBETYPE
 CUBETYPE | テクスチャ圧縮(BC7)の画質