DDS Image: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
No edit summary
imported>Ikskoks
 
(43 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
// 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
}
</pre>
</pre>
</div>
</div>
Line 19: 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 ===
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 ===  
=== Compatible Programs ===  
Line 26: Line 95:
* GIMP
* GIMP
* Adobe Photoshop
* Adobe Photoshop
* XnView MP
* Windows Texture Viewer
* paint.NET
* DDS File Viewer
<br/><br>
<br/><br>




[[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