¿Qué es el formato DDS (DirectDraw Surface)?
DDS — DirectDraw Surface — es un formato contenedor de texturas desarrollado por Microsoft en 1998 como parte de DirectX 6.0. A diferencia de la mayoría de formatos de imagen, DDS fue diseñado desde su origen para la descompresión de texturas en GPU en tiempo real: los datos almacenados en un archivo DDS pueden cargarse en la GPU y utilizarse directamente en formato comprimido, sin necesidad de descomprimirse nunca en RAM.
Esta propiedad hace que DDS sea fundamentalmente diferente a PNG, JPEG o TGA. Esos formatos se descomprimen completamente al cargarse; DDS permanece comprimido en la GPU, ahorrando memoria de vídeo (VRAM) y ancho de banda de memoria en cada fotograma que renderiza el juego.
Especificaciones técnicas: Formatos de compresión por bloques
DDS es un contenedor. Los datos de textura que contiene se almacenan en uno de varios formatos BCn (Block Compression), cada uno adecuado para diferentes casos de uso:
| Formato | También conocido como | Alfa | Caso de uso |
|---|---|---|---|
| BC1 | DXT1 | Ninguno o 1 bit | Texturas opacas, compresión 4:1 |
| BC2 | DXT3 | Abrupto/definido | Elementos de UI con bordes duros transparentes |
| BC3 | DXT5 | Suave (gradiente) | Follaje, vidrio, transparencia general; mapas de normales |
| BC4 | — | Ninguno | Canal único (escala de grises): rugosidad, mapas AO |
| BC5 | — | Ninguno | Doble canal — mapas de normales (espacio tangente) |
| BC6H | — | Ninguno | Texturas HDR (punto flotante) |
| BC7 | — | Sí | Sustituto de alta calidad de BC3; juegos modernos (DX11+) |
Ratios de compresión explicados
- BC1 (DXT1): Compresión 4:1 para texturas opacas. Una textura RGB de 1024×1024 que ocuparía 3 MB sin comprimir se convierte en 512 KB en la GPU.
- BC3 (DXT5): El mismo ratio 4:1 pero incluye canal alfa suave. Ha sido el estándar para texturas transparentes durante más de una década.
- BC7: El mismo tamaño de archivo que BC3 pero con calidad significativamente mejor, especialmente para gradientes y superficies detalladas. Preferido en todos los títulos nuevos sobre DirectX 11 y superior.
- BC6H: Diseñado para contenido HDR (Alto Rango Dinámico). Almacena valores de luminancia en punto flotante utilizados en workflows de renderizado PBR (Physically Based Rendering).
Por qué importa la compresión en GPU
Cuando un juego carga una textura PNG o TGA, la CPU la descomprime y envía el bitmap completo sin comprimir a la GPU. Una textura RGBA de 4096×4096 descomprimida ocupa 64 MB de VRAM. La misma textura como BC7 ocupa 16 MB — y permanece en 16 MB en la GPU.
Esto importa porque:
- La VRAM es finita — los juegos modernos manejan conjuntos de texturas en 4K que pueden totalizar 4–8 GB de VRAM.
- Ancho de banda de memoria — cada vez que la GPU muestrea una textura, lee desde la VRAM. Las texturas comprimidas suponen menos bytes transferidos por muestra, reduciendo los cuellos de botella en el pipeline de GPU.
- Tiempos de carga — las texturas DDS se cargan más rápido porque se transfieren menos datos desde el disco a la GPU.
Mipmaps: niveles de resolución almacenados en un solo archivo
DDS admite de forma nativa los mipmaps — un conjunto de versiones de la textura con resolución progresivamente menor, precomputadas y almacenadas dentro del propio archivo DDS:
Nivel 0: 1024×1024 (resolución completa)
Nivel 1: 512×512
Nivel 2: 256×256
Nivel 3: 128×128
Nivel 4: 64×64
...
Nivel 10: 1×1
Al renderizar, la GPU selecciona automáticamente el nivel de mipmap adecuado según la distancia del objeto a la cámara. Esto elimina el aliasing de texturas (el efecto de parpadeo en superficies lejanas) y mejora el rendimiento al reducir el número de muestras de textura necesarias.
Al convertir un DDS a PNG, normalmente solo se extrae el mipmap de resolución completa (nivel 0) — el resto de niveles se descarta.
Cubemaps: seis caras en un solo archivo
DDS también admite texturas cubemap: seis imágenes cuadradas de cara (X, Y, Z positivas y negativas) almacenadas en un único archivo DDS. Los cubemaps se usan para:
- Skyboxes — el entorno de fondo lejano en escenas 3D
- Reflection probes — captura del entorno para reflejos en tiempo real sobre superficies brillantes
- IBL (Image-Based Lighting) — cubemaps HDR usados en renderizado PBR
Ningún otro formato de imagen común (PNG, JPEG, TGA) admite cubemaps de forma nativa. DDS es el formato estándar para mapas de entorno horneados en motores de juego.
Dónde se usa DDS
- Todos los grandes juegos de PC con DirectX — DDS ha sido el formato estándar de texturas para PC desde DirectX 7
- Unreal Engine — UE comprime las texturas a formatos equivalentes a DDS internamente; DDS es el formato de importación estándar para texturas precomprimidas
- Source Engine (Valve) — Half-Life 2, Counter-Strike, Portal y todos los juegos de Source usan DDS (con un contenedor
.vtfque contiene datos DXT) - Juegos de Bethesda — Skyrim, Fallout 3/4/76, Oblivion y Starfield usan texturas DDS extensivamente; la comunidad de modding trabaja en DDS
- Juegos de Xbox — El hardware Xbox usa compresión DXT/BCn de forma nativa
- Modding de juegos de PC — Las herramientas de mod de prácticamente cualquier juego de PC importante esperan DDS
DDS vs PNG vs TGA: Comparativa
| Característica | DDS | PNG | TGA |
|---|---|---|---|
| Compresión nativa en GPU | Sí | No | No |
| Ratio de compresión (GPU) | 4:1 a 8:1 | Ninguno (se descomprime totalmente) | Ninguno |
| Almacenamiento de mipmaps | Sí (múltiples niveles) | No | No |
| Soporte de cubemaps | Sí | No | No |
| Canal alfa | Sí (BC2/BC3/BC7) | Sí | Sí (32 bits) |
| Soporte en navegadores | No | Sí | No |
| Soporte HDR | Sí (BC6H) | Limitado | No |
| Soporte en herramientas | Herramientas especializadas | Universal | Amplio |
Cómo convertir texturas DDS
NVIDIA Texture Tools Exporter (Windows)
La herramienta oficial de NVIDIA para crear y convertir archivos DDS. Se integra con Photoshop y funciona de forma independiente. Admite todos los formatos BCn.
Intel Texture Works Plugin
Un plugin de Photoshop de Intel que gestiona la importación/exportación de DDS con soporte de BC7 y generación de mipmaps.
texconv (Microsoft)
La herramienta de conversión de texturas en línea de comandos de Microsoft, parte de DirectXTex:
texconv -f BC7_UNORM texture.dds -o carpeta_salida
texconv -f PNG texture.dds -o carpeta_salida
ImageMagick
convert texture.dds texture.png
ImageMagick extrae el nivel de mipmap superior. Los canales alfa se preservan.
GIMP con plugin DDS
GIMP admite DDS mediante un plugin (preinstalado en algunas distribuciones). Abre el archivo DDS normalmente; GIMP preguntará qué nivel de mipmap cargar.
Importante: convertir DESDE DDS supone perder la compresión GPU
Al convertir un DDS a PNG o TGA, se pierde:
- Compresión GPU — la salida es un bitmap completo sin comprimir
- Mipmaps — normalmente solo se exporta el nivel superior
- Calidad BCn — la compresión BC1/BC3 introduce artefactos menores; al convertir a PNG se vuelven visibles
Usa la conversión DDS-a-PNG solo para edición. Tras editar, vuelve a comprimir en DDS con el formato BCn adecuado antes de devolver la textura al motor de juego.
Conclusión
DDS es el formato de textura para el que se construyó la era GPU. Sus formatos de compresión por bloques (DXT/BCn) ofrecen compresión en tiempo real que permanece en la GPU, su soporte de mipmaps elimina el aliasing y su capacidad de cubemap lo hace el único formato válido para mapas de entorno. Si trabajas con texturas de juegos de PC, assets de motores o renderizado 3D, trabajarás con DDS. Para compartir o editar, convierte a PNG — y KaijuConverter hace esa conversión al instante.
Conversiones relacionadas
Conversiones frecuentes del catálogo: