テクスチャ用の DDS ファイルのレイアウト

テクスチャ用の DDS ファイルのレイアウト

単純な圧縮していないテクスチャのファイルには、DDSD_PITCH および DDPF_RGB ピクセル フォーマット サーフェイスが入っていなければならない。ピッチの値は DWORD に整列すること。この場合、メイン イメージは合計 (dwPitchOrLinearSize x dwHeight) バイトになる。

ファイルにミップマップも含まれている場合は、DDSD_MIPMAPCOUNT、DDSCAPS_MIPMAP、および DDSCAPS_COMPLEX フラグを設定する必要がある。また、dwMipMapCount フィールドには、ファイル内で定義されているレベルの総数を指定する (256 × 256 のイメージの場合、このフィールドは 9 になる)。ミップマップ レベルの各イメージのピッチは、dwWidth およびピクセル フォーマットから計算されて、DWORD で整列される。たとえば、R8G8B8 (ピクセルあたり 3 バイト) というピクセル フォーマットで、すべてのミップマップ レベルを持つ、256 × 256 のメイン イメージには、次のものが含まれる。

"DDS", (256, 256), (pitch=768), (pixel format=R8G8B8,bitcount=24), (mipmapcount=9), (TEXTURE, PITCH, COMPLEX, MIPMAP, RGB) 128 バイト
256 × 256 メイン イメージ 196608 バイト
128 × 128 ミップマップ イメージ 49152 バイト
64 × 64 ミップマップ イメージ 12288 バイト
32 × 32 ミップマップ イメージ 3072 バイト
16 × 16 ミップマップ イメージ 768 バイト
8 × 8 ミップマップ イメージ 192 バイト
4 × 4 ミップマップ イメージ 48 バイト
2 × 2 ミップマップ イメージ 12 バイト
1 × 1 ミップマップ イメージ 4 バイト

単純な圧縮テクスチャのファイルには、DDSD_LINEARSIZE および DDPF_FOURCC ピクセル フォーマット サーフェイスが入っていなければならない。この場合、メイン イメージは合計 (dwPitchOrLinearSize) バイトになる。ファイルがミップマップを含んでいる場合は、DDSD_MIPMAPCOUNT、DDSCAPS_COMPLEX, DDSCAPS_MIPMAP、dwMipMapCount フィールドを設定する必要がある。

圧縮した DXTn フォーマットの場合、各ミップマップ レベル イメージのサイズは前のイメージのサイズの 4 分の 1 であり、最小値は 8 (DXT1) または 16 (DXT2-5) バイト (これは正方形テクスチャにのみ該当) である。たとえば、DXT1 というピクセル フォーマットで、すべてのミップマップ レベルを持つ、256 × 256 のメイン イメージには、次のものが含まれる。

DDS, (256, 256), (linearsize=32768), 128 bytes (pixel format=DXT1), (mipmapcount=9), (TEXTURE, LINEARSIZE, COMPLEX, MIPMAP, FOURCC) 128 バイト
256 × 256 メイン イメージ 32768 バイト
128 × 128 ミップマップ イメージ 8192 バイト
64 × 64 ミップマップ イメージ 2048 バイト
32 × 32 ミップマップ イメージ 512 バイト
16 × 16 ミップマップ イメージ 128 バイト
8 × 8 ミップマップ イメージ 32 バイト
4 × 4 ミップマップ イメージ 8 バイト
2 × 2 ミップマップ イメージ 8 バイト
1 × 1 ミップマップ イメージ 8 バイト

ミップマップを生成すると、通常は 1 × 1 までのすべてのレベルが作成される。ツールによっては、部分的なミップマップ チェーンをサポートしていない場合がある。

正方形以外のテクスチャの圧縮していないサイズ DXTn を計算する場合は、各ミップマップ レベルについて次の公式を使う。

max(1,width ÷ 4)x max(1,height ÷ 4)x 8 (DXT1) or 16 (DXT2-5)

DXT1 というピクセル フォーマットで、すべてのミップマップ レベルを持つ、256 × 64 のメイン イメージには、次のものが入る。

"DDS ", (256, 64), (linearsize=8192), (pixel format=DXT1), (mipmapcount=9), (TEXTURE, LINEARSIZE, COMPLEX, MIPMAP, FOURCC) 128 バイト
256 × 64 メイン イメージ 8192 バイト
128 × 32 ミップマップ イメージ 2048 バイト
64 × 16 ミップマップ イメージ 512 バイト
32 × 8 ミップマップ イメージ 128 バイト
16 × 4 ミップマップ イメージ 32 バイト
8 × 2 ミップマップ イメージ 16 バイト
4 × 1 ミップマップ イメージ 8 バイト
2 × 1 ミップマップ イメージ 8 バイト
1 × 1 ミップマップ イメージ 8 バイト