DDS Image: Difference between revisions
Jump to navigation
Jump to search
imported>Ikskoks |
imported>Ikskoks |
||
| (6 intermediate revisions by the same user not shown) | |||
| Line 29: | 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", | 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 83: | Line 83: | ||
=== 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) | * Disney Sing It (*.TEX) | ||
* Rigs of Rods (*.DDS) (PC) | |||
* Star Stable Online | * Star Stable Online | ||
* Many more... | * Many more... | ||
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