Difference between revisions of "DDS Image"

From XentaxWiki
Jump to: navigation, search
(Notes and Comments)
(Pitch calculation)
Line 74: Line 74:
 
but 16 bytes for other block-compressed formats. <br><br>
 
but 16 bytes for other block-compressed formats. <br><br>
  
For R8G8_B8G8, G8R8_G8B8, legacy UYVY-packed, and legacy YUY2-packed formats, compute the pitch as: <br>
+
For R8G8_B8G8, G8R8_G8B8, legacy UYVY-packed, and legacy YUY2-packed formats: <br>
 
'''((width+1) >> 1) * 4''' <br><br>
 
'''((width+1) >> 1) * 4''' <br><br>
  
For other formats, compute the pitch as: <br>
+
For other formats: <br>
 
'''( width * bits-per-pixel + 7 ) / 8''' <br>
 
'''( width * bits-per-pixel + 7 ) / 8''' <br>
  

Revision as of 18:26, 6 January 2021

DDS


Format Specifications

// DDS file format

// little endian

4 bytes (char) - magic // "DDS "

// surface format header
4 bytes (uint32) - header size  // "124"
4 bytes - flags      // DDSD_CAPS, DDSD_PIXELFORMAT, DDSD_WIDTH and DDSD_HEIGHT flags are required
4 bytes (uint32) - height in pixels
4 bytes (uint32) - width in pixels
4 bytes (uint32) - pitch or linear size  // calculated from equation
                                               // see notes below for details
                                               // pitch can be "0"
4 bytes (uint32) - depth of the volume  // can be "0"
4 bytes (uint32) - number of mipmaps
44 bytes - reserved

// pixel format structure (32 bytes)
4 bytes (uint32) - structure size
4 bytes - flags
4 bytes (char) - compression type   // "DXT1", "DXT2", "DXT3", "DXT4", or "DXT5"
4 bytes (uint32) - RGB bit count   // 16, 24, or 32
4 bytes (uint32) - R bit mask
4 bytes (uint32) - G bit mask
4 bytes (uint32) - B bit mask
4 bytes (uint32) - A bit mask


// capabilities structure (16 bytes)
4 bytes (uint32) - caps 1
4 bytes (uint32) - caps 2
4 bytes (uint32) - reserved 1
4 bytes (uint32) - reserved 2


4 bytes (uint32) - reserved


x bytes - image data / main surface data


// additional surfaces (optional)
num_of_surfaces *
{
   x bytes - additional surfaces data
}

MultiEx BMS Script

Not written yet.

Notes and Comments

None.

Pitch calculation

For block-compressed formats, compute the pitch as:
max( 1, ((width+3)/4) ) * block-size
The block-size is 8 bytes for DXT1, BC1 and BC4 formats
but 16 bytes for other block-compressed formats.

For R8G8_B8G8, G8R8_G8B8, legacy UYVY-packed, and legacy YUY2-packed formats:
((width+1) >> 1) * 4

For other formats:
( width * bits-per-pixel + 7 ) / 8

Games

List of games using this file format:

  • Star Stable Online
  • Many more...

Compatible Programs

  • IrfanView
  • GIMP
  • Adobe Photoshop
  • XnView MP
  • Windows Texture Viewer
  • paint.NET
  • DDS File Viewer