What Is DDS (DirectDraw Surface)?
DDS — DirectDraw Surface — is a texture container format developed by Microsoft in 1998 as part of DirectX 6.0. Unlike most image formats, DDS was designed from the ground up for real-time GPU texture decompression: the data inside a DDS file can be uploaded to the GPU and used directly in its compressed form, without ever being fully decompressed in RAM.
This single property makes DDS fundamentally different from PNG, JPEG, or TGA. Those formats decompress entirely when loaded; DDS stays compressed on the GPU, saving both video memory (VRAM) and memory bandwidth every frame your game runs.
Technical Specifications: Block Compression Formats
DDS is a container. The actual texture data inside is stored in one of several BCn (Block Compression) formats, each suited to different use cases:
| Format | Also Known As | Alpha | Use Case |
|---|---|---|---|
| BC1 | DXT1 | None or 1-bit | Opaque textures, 4:1 compression |
| BC2 | DXT3 | Sharp/abrupt | UI elements with hard-edged transparency |
| BC3 | DXT5 | Smooth (gradient) | Foliage, glass, general transparency; normal maps |
| BC4 | — | None | Single-channel (grayscale) — roughness, AO maps |
| BC5 | — | None | Dual-channel — normal maps (tangent space) |
| BC6H | — | None | HDR textures (floating point) |
| BC7 | — | Yes | High-quality replacement for BC3; modern games (DX11+) |
Compression ratios explained
- BC1 (DXT1): 4:1 compression for opaque textures. A 1024×1024 RGB texture that would be 3 MB uncompressed becomes 512 KB on the GPU.
- BC3 (DXT5): Same 4:1 ratio but includes a smooth alpha channel. Standard for transparent textures for over a decade.
- BC7: Same file size as BC3 but significantly better quality — especially for gradients and detailed surfaces. Preferred for all new titles on DirectX 11 and above.
- BC6H: Designed for HDR (High Dynamic Range) content. Stores floating-point luminance values used in PBR (Physically Based Rendering) workflows.
Why GPU Compression Matters
When a game loads a PNG or TGA texture, the CPU decompresses it and sends the full uncompressed bitmap to the GPU. A 4096×4096 RGBA texture decompressed is 64 MB of VRAM. The same texture as BC7 is 16 MB — and it stays at 16 MB on the GPU.
This matters because:
- VRAM is finite — modern games push 4K texture sets that can total 4–8 GB of VRAM.
- Memory bandwidth — every time the GPU samples a texture, it reads from VRAM. Compressed textures mean fewer bytes transferred per sample, which reduces GPU pipeline stalls.
- Load times — DDS textures load faster because less data is transferred from disk to GPU.
Mipmaps: Stored Resolution Levels Inside One File
DDS natively supports mipmaps — a set of pre-computed, progressively lower-resolution versions of the same texture stored inside the single DDS file:
Level 0: 1024×1024 (full resolution)
Level 1: 512×512
Level 2: 256×256
Level 3: 128×128
Level 4: 64×64
...
Level 10: 1×1
When rendering, the GPU automatically selects the mipmap level appropriate for the object's distance from the camera. This eliminates texture aliasing (shimmering on distant surfaces) and improves rendering performance by reducing the number of texture samples needed.
When you convert a DDS to PNG, you typically extract only the full-resolution (level 0) mip — all other levels are discarded.
Cubemaps: Six Faces in One File
DDS also supports cubemap textures: six square face images (positive/negative X, Y, Z) stored in a single DDS file. Cubemaps are used for:
- Skyboxes — the distant background environment in 3D scenes
- Reflection probes — capturing the environment for real-time reflections on shiny surfaces
- IBL (Image-Based Lighting) — HDR cubemaps used in PBR rendering
No other common image format (PNG, JPEG, TGA) supports cubemaps natively. DDS is the standard format for baked environment maps in game engines.
Where DDS Is Used
- All major DirectX PC games — DDS has been the standard PC game texture format since DirectX 7
- Unreal Engine — UE compresses textures to DDS-equivalent formats internally; DDS is the standard import format for pre-compressed textures
- Source Engine (Valve) — Half-Life 2, Counter-Strike, Portal, and all Source games use DDS (with a
.vtfwrapper that contains DXT data) - Bethesda games — Skyrim, Fallout 3/4/76, Oblivion, Starfield all use DDS textures extensively; the modding community works in DDS
- Xbox games — Xbox hardware uses DXT/BCn compression natively
- PC game modding — Mod tools for nearly every major PC game expect DDS
DDS vs PNG vs TGA: Comparison
| Feature | DDS | PNG | TGA |
|---|---|---|---|
| GPU-native compression | Yes | No | No |
| Compression ratio (GPU) | 4:1 to 8:1 | None (decompresses fully) | None |
| Mipmap storage | Yes (multiple levels) | No | No |
| Cubemap support | Yes | No | No |
| Alpha channel | Yes (BC2/BC3/BC7) | Yes | Yes (32-bit) |
| Browser support | No | Yes | No |
| HDR support | Yes (BC6H) | Limited | No |
| Tool support | Specialized tools needed | Universal | Wide |
Converting DDS Textures
NVIDIA Texture Tools Exporter (Windows)
The official NVIDIA tool for creating and converting DDS files. Integrates with Photoshop and works standalone. Supports all BCn formats.
Intel Texture Works Plugin
A Photoshop plugin from Intel that handles DDS import/export with BC7 support and mipmap generation.
texconv (Microsoft)
Microsoft's command-line texture conversion tool, part of DirectXTex:
texconv -f BC7_UNORM texture.dds -o output_folder
texconv -f PNG texture.dds -o output_folder
ImageMagick
convert texture.dds texture.png
ImageMagick will extract the top mipmap level. Alpha channels are preserved.
GIMP with DDS Plugin
GIMP supports DDS via a plugin (pre-installed in some distributions). Open the DDS file normally; GIMP will ask which mipmap level to load.
Important: Converting FROM DDS Loses GPU Compression
When you convert a DDS to PNG or TGA, you lose:
- GPU compression — the output is a full uncompressed bitmap
- Mipmaps — only the top level is typically exported
- BCn quality — BC1/BC3 compression introduces minor artifacts; converting to PNG makes them visible
Use DDS-to-PNG conversion for editing only. After editing, re-compress back to DDS with the appropriate BCn format before returning the texture to a game engine.
Conclusion
DDS is the texture format the GPU era was built for. Its Block Compression formats (DXT/BCn) deliver real-time compression that stays on the GPU, its mipmap support eliminates aliasing, and its cubemap capability makes it the only format for environment maps. If you work with PC game textures, engine assets, or 3D rendering, you will work with DDS. For sharing or editing, convert to PNG — and KaijuConverter handles that conversion instantly.
Related conversions
Frequent conversions across the catalogue: