ゲーム制作のテクスチャーによく利用される画像形式「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種類あります。
種類 | 圧縮率 | 備考 |
DXT1 | 1/8 | アルファなし or1ビットアルファ(2階調) |
DXT2 | 1/4 | 4ビットアルファ(16階調) |
DXT3 | 1/4 | 4ビットアルファ(16階調) |
DXT4 | 1/4 | 多階調アルファ |
DXT5 | 1/4 | 多階調アルファ |
・アルファなし=DXT1
・アルファあり=DXT5
という認識でOKかと思います。(DXT2,DXT3、DXT4はほぼ使いません)
BC形式 (DirectX11以降)
BC = Block Compression(ブロック圧縮)
Direct X11では新しい形式が追加され、フォーマット名も変わりました。
BC1~BC7の7種類あります。
種類 | 圧縮率 | 備考 | 備考 |
BC1 | 1/8 | アルファなし or 1ビットアルファ(2階調) | DXT1と同等 |
BC2 | 1/4 | 4ビットアルファ(16階調) | DXT2, DXT3と同等 |
BC3 | 1/4 | 多階調アルファ | DXT4, DXT5と同等 |
BC4 | 1/8 | 1チャンネルのみ | ハイトマップに使われる |
BC5 | 1/4 | 2チャンネルのみ | 法線マップに使われる |
BC6H | 1/4 | HDR用 | (ハイダイナミックレンジ) |
BC7 | 1/4 | 多階調アルファ | DXT5から圧縮アルゴリズムが改良 |
・アルファなし=BC1
・アルファあり=BC7
という認識でOKかと思います。
(特殊な使われ方をするBC4とBC5、BC6Hが追加されました)
DDSファイルの メリット・デメリット
メリット
・テクスチャを圧縮することで、メモリを節約することができます
(DirectXは、DDSフォーマットのテクスチャを圧縮されたままの状態で処理できます)
使用するメモリ量は、BMP(非圧縮)やPNG(可逆性圧縮)に比べて 1/4~1/8 になります
メリット
・非可逆圧縮なのでBMPやPNGよりも多少画像品質は落ちます
・Windowsが標準で対応していないフォーマットなので、作るのが少し面倒です
DDSファイルの テクスチャ容量
解像度 | ミップマップ数 | DXT1 | DXT5 |
16×16 | 5ミップマップ | 312 バイト | 496 バイト |
32×32 | 6 ミップマップ | 824 バイト | 1.48kb |
64×64 | 7 ミップマップ | 2.80kb | 5.48kb |
128×128 | 8 ミップマップ | 10.8kb | 21.4kb |
256×256 | 9 ミップマップ | 42.8kb | 85.4kb |
512×512 | 10 ミップマップ | 170kb | 341kb |
1024×1024 | 11 ミップマップ | 682kb | 1.33MB |
2048×2048 | 12 ミップマップ | 2.66MB | 5.33MB |
4096×4096 | 13 ミップマップ | 10.6MB | 21.3MB |
8192×8192 | 14 ミップマップ | 42.6MB | 85.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
ツールは最新版が出ているそうです。
以上、DDSファイル について まとめ でした。
コメント