DirectX11のDDS

DirectX11では、DDSファイルフォーマットが新しくなりました。

すぐ忘れてしまうので、メモ書き程度に。

DirectX9でもDDSファイルが使用可能でしたが、DirectX11では新しい形式が追加され、またフォーマット名も変わりました。

DirectX9 のDDSフォーマット

DirectX11 のDDSフォーマット

DirectX9ではDXT1~5で呼ばれていましたが、これがBC1~3になりました。

また、特殊な使われ方をするBC4とBC5が追加、また新たにHDR(ハイダイナミックレンジ)のBC6Hと、DXT5から圧縮アルゴリズムが改良されたBC7が登場しています。

(BC4とBC5はATI1、ATI2として以前から存在していたもののようです)

これらはDirectX9と同様に、DirectX11でグラフィックカードのメモリを節約することができます

DirectX11内では、DXGI_FORMAT_BCx~みたいな特殊なフォーマットで定義されています。

なお、これらは以前と同じくすべて非可逆圧縮です。元の画像には戻らず、どこか劣化が発生します。

ただ、DirectX9と同様に、上手にフォーマットとツールを選んであげれば、ほぼ劣化せずに、4分の1以下のメモリで使用することができます。

BC7はかなり綺麗になったようなので、試してみてはいかがでしょうか。

BC1~BC3 って変わったの?

なぜDXTからBCという名前に変わったのかは分かりませんが、DXT1はBC1、DXT3はBC2、DXT5はBC3と基本的に同じです。

なにやらDirectX10以降では、拡張ヘッダというものを使うこともできるそうで、これを使うとDirectX9では使用できなくなります。

DirectX9で使っていたDDSファイルは、DirectX11でも使用可能です。

どうやって作るの? またDirectX9のときと同様に、扱えるツールは非常に少ないようです。

旧来のBC1~BC3については、DirectX9で使っていたツールがそのまま使えます。

ただし、BC4、BC5、BC6HやBC7で出力できるツールは私はほとんど知りません。

有名っぽいのは以下の3つのようです。

DirectXTex (Microsoft製)

https://directxtex.codeplex.com/

NVIDIA texture tools (2010/5 以降更新なし)

https://code.google.com/p/nvidia-texture-tools/

ISPC Texture Compressor (2015/9/13時点の最新更新が2015/9/2)

https://software.intel.com/en-us/articles/fast-ispc-texture-compressor-update

が、すべてプロジェクトファイル付きのコマンドライン実行形式であり、ユーザーフレンドリーとはとても言えません(2015/9/13現在)。

もっと良いツールがありましたら、教えてください。

MikuMikuMoving v2 実装完了。