DDSファイル について まとめ

DDS_ロゴその他CG全般

ゲーム制作のテクスチャーによく利用される画像形式「DDS」フォーマット。


DDSフォーマットについて
最適な圧縮形式、ファイル容量サイズ作り方メリットデメリットなど、
調べてみましたので、備忘録として残しておきます。

DDSファイルとは?

DDS とは (Direct Draw Surface)の頭文字をとったものだそうです。

ゲームやグラフィックスプログラムを作成するときによく利用される
画像ファイル(テクスチャー)フォーマットです。

Direct Xで簡単かつ高速に扱える事から、ゲームなどによく利用されています。

参考までに、DDSファイル以外に、画像の圧縮フォーマット形式で有名なものでは、
Windows標準のBMP(ビットマップ)やJPEGなどがあります。
他には、iOSデバイスのGPUとして採用されているPowerVR向けの圧縮フォーマット
PVRTC(PowerVR Texture Compression)などもあります。

DDSファイルの圧縮フォーマット

DDSファイルの圧縮フォーマットDXT形式BC形式の2種類があります

DXT形式 (DirectX9以降)

DXTC = DirectX Texture Compression

DirectX9以降で利用できるDDS圧縮フォーマット でDXT1~DXT5の5種類あります。

種類圧縮率備考
DXT11/8アルファなし or1ビットアルファ(2階調
DXT21/44ビットアルファ(16階調)
DXT31/44ビットアルファ(16階調)
DXT41/4多階調アルファ
DXT51/4多階調アルファ

・アルファなし=DXT1
・アルファあり=DXT5

という認識でOKかと思います。(DXT2,DXT3、DXT4はほぼ使いません)

BC形式 (DirectX11以降)

BC = Block Compression(ブロック圧縮)

Direct X11では新しい形式が追加され、フォーマット名も変わりました。
BC1~BC7の7種類あります。

種類圧縮率備考備考
BC11/8アルファなし or 1ビットアルファ(2階調)DXT1と同等
BC21/44ビットアルファ(16階調)DXT2, DXT3と同等
BC31/4多階調アルファDXT4, DXT5と同等
BC41/81チャンネルのみハイトマップに使われる
BC51/42チャンネルのみ法線マップに使われる
BC6H1/4HDR用(ハイダイナミックレンジ)
BC71/4多階調アルファDXT5から圧縮アルゴリズムが改良

・アルファなし=BC1
・アルファあり=BC7
という認識でOKかと思います。
(特殊な使われ方をするBC4とBC5、BC6Hが追加されました)

DDSファイルの メリット・デメリット

メリット

・テクスチャを圧縮することで、メモリを節約することができます
 (DirectXは、DDSフォーマットのテクスチャを圧縮されたままの状態で処理できます)
 使用するメモリ量は、BMP(非圧縮)やPNG(可逆性圧縮)に比べて 1/4~1/8 になります

メリット

・非可逆圧縮なのでBMPやPNGよりも多少画像品質は落ちます

・Windowsが標準で対応していないフォーマットなので、作るのが少し面倒です

DDSファイルの テクスチャ容量

解像度ミップマップ数DXT1DXT5
16×165ミップマップ312 バイト496 バイト
32×326 ミップマップ824 バイト1.48kb
64×647 ミップマップ2.80kb5.48kb
128×1288 ミップマップ10.8kb21.4kb
256×2569 ミップマップ42.8kb85.4kb
512×51210 ミップマップ170kb341kb
1024×102411 ミップマップ682kb1.33MB
2048×204812 ミップマップ2.66MB5.33MB
4096×409613 ミップマップ10.6MB21.3MB
8192×819214 ミップマップ42.6MB85.3MB

JPEGなどと違って同じ解像度のテクスチャなら、ファイル容量は画像に左右されず固定です

テクスチャ解像度

Unreal Engine 4 では、1 x 1 から 8192 x 8192 までのテクスチャ解像度をサポートします。

Mipmapを有効にするにはサイズを2のべき乗にしないといけません

DDSファイルの作り方


PhotoShopのプラグインを利用してDDSファイルを書き出します。
NVIDIA Texture Tools for Adobe Photoshop

①圧縮形式を選択

DXT1 RGB 4 bpp | no alpha
一番軽い圧縮形式。アルファチャンネルは持てない
DXT1 ARGB 4bpp 1bit alpha
上記にプラスして、1Bit抜きアルファチャンネル付与(白か黒の2階調)
DXT5 ARGB 8 bpp | interpolated alpha
アルファチャンネルをもてる圧縮形式。圧縮率が高いのでブロックノイズが出ることも
8.8.8.8 ARGB 32 bpp | unsigned
低圧縮でかなり重たいが、アルファチャンネル付きで、ブロックノイズもでないきれいな圧縮形式

②MipMapの有無

③保存

圧縮形式を選んだ後、「Generate MIP maps」にチェックがはいっていることを確認してから「Save」します。

ツール

NVIDIA Texture Tools for Adobe Photoshop
ツールは最新版が出ているそうです。

NVIDIA Texture Tools Exporter 2020.1 - あの無料DDSテクスチャ圧縮ツールの最新版が公開!スタンドアロン動作&Photoshopプラグインもあるよ!
ゲーム開発などではお馴染みのDDS圧縮、昔はNVIDIAのテクスチャ圧縮ツールを使う事がありましたがPhotoshopプラグインもアップデートされず音沙汰ない状態でしたよね…。そんな中、3月22日...

以上、DDSファイル について まとめ でした。

コメント

タイトルとURLをコピーしました