DDS Image: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(37 intermediate revisions by the same user not shown)
Line 1: Line 1:
== DDS ==  
== DDS ==  


* ''' Format Type ''':    Image <br>  
* ''' Format Type ''':    Image / Texture<br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>
* ''' Signature ''':    DDS <br>




=== Format Specifications ===  
=== Format Specifications ===  


<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:1000px; overflow:auto;">
<pre>
<pre>
// DDS file format
// DDS file format
Line 13: Line 14:
// little endian
// little endian


// surface format header (128 bytes)
4 bytes (char) - signature // "DDS "
4 bytes (char) - magic // "DDS "
 
4 bytes (uint32) - header size without magic // "124"
// surface format header
4 bytes - flags
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) - height in pixels
4 bytes (uint32) - width in pixels
4 bytes (uint32) - width in pixels
4 bytes (uint32) - pitch or linear size // calculated from equation
4 bytes (uint32) - pitch or linear size   // calculated from equation
                                              // see notes below for details
                                          // see notes below for details
                                              // pitch can be "0"
                                          // pitch can be "0"
4 bytes (uint32) - depth of the volume  // can be "0"
4 bytes (uint32) - depth of the volume  // can be "0"
4 bytes (uint32) - number of mipmaps
4 bytes (uint32) - number of mipmaps
Line 27: Line 29:


// pixel format structure (32 bytes)
// pixel format structure (32 bytes)
4 bytes (uint32) - structure size
4 bytes (uint32) - structure size // always 32
4 bytes - flags
4 bytes - flags
4 bytes (char) - compression type  // "DXT1", "DXT2", "DXT3", "DXT4", or "DXT5"
4 bytes (char) - compression type  // "DXT1", "DXT2", "DXT3", "DXT4", "DXT5" or nulls for no compression
4 bytes (uint32) - RGB bit count  // 16, 24, or 32
4 bytes (uint32) - RGB bit count  // 16, 24, or 32
4 bytes (uint32) - R bit mask
4 bytes (uint32) - R bit mask
Line 37: Line 39:




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




x bytes - image data
4 bytes (uint32) - reserved
 
 
x bytes - image data / main surface data
 
 
// additional surfaces (optional)
num_of_surfaces *
{
  x bytes - additional surfaces data
}
</pre>
</pre>
</div>
</div>
Line 54: Line 66:
=== Notes and Comments ===  
=== Notes and Comments ===  


None.
* DDS texture can have additional surfaces (mipmaps) which should always be smaller than the main surface.
 
=== Pitch calculation ===
 
For block-compressed formats, compute the pitch as: <br>
'''max( 1, ((width+3)/4) ) * block-size''' <br>
The block-size is 8 bytes for DXT1, BC1 and BC4 formats <br>
but 16 bytes for other block-compressed formats. <br><br>
 
For R8G8_B8G8, G8R8_G8B8, legacy UYVY-packed, and legacy YUY2-packed formats: <br>
'''((width+1) >> 1) * 4''' <br><br>
 
For other formats: <br>
'''( width * bits-per-pixel + 7 ) / 8''' <br>


=== Games ===  
=== Games ===  
List of games using this file format:
List of games using this file format:
* 0 A.D. (*.DDS) (PC)
* Disney Sing It (*.TEX)
* Rigs of Rods (*.DDS) (PC)
* Star Stable Online
* Star Stable Online
* Many more...
* Many more...
Line 73: Line 102:




[[Category:Complete WIP|DDS Image]]
[[Category:Complete Complete|DDS Image]]
[[Category:Platform PC|DDS Image]]
[[Category:Platform PC|DDS Image]]
[[Category:CE None|DDS Image]]
[[Category:CE None|DDS Image]]
[[Category:CE Compressed|DDS Image]]
[[Category:DXT1 compression]]
[[Category:DXT2 compression]]
[[Category:DXT3 compression]]
[[Category:DXT4 compression]]
[[Category:DXT5 compression]]
[[Category:Format_Image | Type: Image]]
[[Category:Format_Image | Type: Image]]
[[Category:Extension_dds | Extension: dds]]
[[Category:Extension_dds | Extension: dds]]
[[Category:BMS_None | BMS: None]]
[[Category:BMS_None | BMS: None]]
[[Category:File Format]]
[[Category:File Format]]

Latest revision as of 20:55, 16 July 2023

DDS

  • Format Type : Image / Texture
  • Endian Order : Little Endian
  • Signature : DDS


Format Specifications

// DDS file format

// little endian

4 bytes (char) - signature // "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  // always 32
4 bytes - flags
4 bytes (char) - compression type   // "DXT1", "DXT2", "DXT3", "DXT4", "DXT5" or nulls for no compression
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

  • DDS texture can have additional surfaces (mipmaps) which should always be smaller than the main surface.

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:

  • 0 A.D. (*.DDS) (PC)
  • Disney Sing It (*.TEX)
  • Rigs of Rods (*.DDS) (PC)
  • Star Stable Online
  • Many more...

Compatible Programs

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