Что такое DDS: полный гид по формату текстур DirectDraw Surface
Вы скачали мод для любимой игры, а внутри — непонятные файлы .dds, которые не открывает ни одна программа. Разбираемся, почему этот формат создан не для людей, а для видеокарт, как он умудряется ужимать текстуры в разы и что с ним делать обычному пользователю.
Что такое DDS простыми словами
DDS (DirectDraw Surface) — это контейнер для текстур, придуманный Microsoft специально для трёхмерной графики. Если PNG и JPG созданы для того, чтобы картинку увидел человек на экране, то DDS создан для того, чтобы картинку максимально быстро прочитала видеокарта во время игры.
В этом и кроется главная идея формата. Обычное изображение процессор сначала распаковывает в память, а уже потом передаёт на отрисовку. Текстура DDS хранится в таком виде, который графический процессор (GPU) понимает напрямую — без промежуточной распаковки. Это экономит видеопамять и время, а в играх каждая миллисекунда на счету.
Коротко
DDS — это «полуфабрикат для видеокарты». Он быстрый и компактный в игре, но почти бесполезен вне 3D-движка: чтобы посмотреть или отредактировать текстуру, её обычно конвертируют в PNG.
Откуда взялся формат: немного истории
Формат DDS появился вместе с DirectX 7.0 в сентябре 1999 года как часть подсистемы DirectDraw — отсюда и название. С тех пор он развивался вместе с DirectX и графическими процессорами:
- DirectX 8 (2000) — добавил поддержку объёмных (3D) текстур и кубических карт окружения (cubemaps), которые используются для отражений и неба в играх.
- DirectX 10 (2006) — принёс новые типы сжатия BC4 и BC5 (идеальны для карт нормалей) и расширенный заголовок DX10 для массивов текстур.
- DirectX 11 (2009) — добавил BC6H для HDR-текстур с расширенным диапазоном яркости и BC7 для максимально качественного цвета.
За четверть века DDS стал негласным стандартом текстур в PC-играх. Именно поэтому, копаясь в файлах практически любой игры — от Skyrim до современных AAA-проектов — вы почти наверняка встретите .dds.
Как устроен файл DDS внутри
С точки зрения структуры DDS — это простой и логичный контейнер. Файл начинается с сигнатуры DDS (четыре байта), за которой идёт заголовок размером 124 байта. В заголовке записано всё, что нужно видеокарте: размеры текстуры, тип сжатия, количество мипмап-уровней, наличие альфа-канала и флаги cubemap/volume.
А дальше — собственно пиксельные данные, уже в том формате, который ждёт GPU. Никакой «хитрой» структуры, как в PNG с его чанками и контрольными суммами: DDS максимально прямолинеен, потому что его задача — быть прочитанным железом мгновенно.
Сжатие BC и DXT: магия блоков 4×4
Самая интересная часть DDS — это блочное сжатие (Block Compression, BCn; раньше его называли S3TC или DXT). Принцип такой: изображение делится на квадраты 4×4 пикселя, и каждый такой блок кодируется отдельно с помощью пары опорных цветов и компактного набора индексов. Видеокарта умеет распаковывать эти блоки «на лету», прямо во время отрисовки.
Разные варианты BC заточены под разные задачи:
| Формат | Старое имя | Для чего | Альфа |
|---|---|---|---|
| BC1 | DXT1 | Непрозрачные текстуры, минимум места (4 бита/пиксель) | 1 бит |
| BC3 | DXT5 | Текстуры с плавной прозрачностью | Да |
| BC4 / BC5 | — | Карты высот и нормалей | — |
| BC6H | — | HDR-текстуры (расширенный диапазон) | — |
| BC7 | — | Максимальное качество цвета | Да |
Важно про качество
Сжатие BC1–BC3 — это сжатие с потерями. Оно даёт фиксированный маленький размер, но огрубляет цвет и оставляет артефакты на градиентах. Поэтому при конвертации DDS в PNG эти артефакты уже «впечатаны» в текстуру — вернуть исходное качество невозможно.
Мипмапы: почему текстуры не мерцают вдалеке
Ещё одна суперспособность DDS — мипмапы (mipmaps). Это заранее уменьшенные копии одной и той же текстуры: полный размер, затем половина, четверть, восьмая и так далее вплоть до 1×1 пикселя. Все они хранятся прямо внутри файла.
Зачем? Когда объект далеко от камеры, видеокарте незачем читать текстуру 4096×4096 — она возьмёт уменьшенную версию. Это убирает неприятное «мерцание» далёких поверхностей и заметно ускоряет отрисовку. По сути, мипмапы — это компромисс «чуть больше места на диске ради большой скорости в игре».
Где используется DDS
DDS — это «закулисный» формат: его почти не видно конечному пользователю, но он есть почти везде, где речь о трёхмерной графике в реальном времени.
- Игры и игровые движки. Unreal Engine, Unity, CryEngine, Source — все умеют работать с DDS. Это основной формат текстур персонажей, окружения, интерфейса.
- Моддинг. Сообщества Skyrim, Fallout, GTA, The Sims буквально живут в DDS: ретекстуры и HD-паки почти всегда поставляются именно в нём.
- 3D-визуализация и CAD. Везде, где нужна быстрая отрисовка материалов на видеокарте.
Как открыть и конвертировать DDS
Поскольку DDS заточен под видеокарту, открыть его двойным кликом обычно не получается. Самый быстрый путь для большинства задач — конвертировать DDS в PNG: PNG понимает любая программа и любой браузер, поддерживает прозрачность и сжатие без потерь.
Загрузите файл
Перетащите .dds в онлайн-конвертер — ничего устанавливать не нужно.
Выберите PNG
PNG-32 сохранит альфа-канал из DDS, если он есть.
Скачайте результат
Готовую текстуру можно открыть и редактировать в Photoshop, GIMP или Paint.NET.
Откройте свою DDS-текстуру прямо сейчас
Бесплатный конвертер FormatZ превратит игровую текстуру в PNG за пару секунд — прямо в браузере, без установки и регистрации.
Конвертировать DDS в PNGЕсли вы занимаетесь моддингом и вам нужно вернуть отредактированную картинку обратно в игру, пригодится обратная конвертация — PNG в DDS. А полный список доступных преобразований всегда есть на странице всех форматов.
Частые вопросы о формате DDS
Читайте также
ГеймингDDS в играх: почему движки обожают сжатые текстуры
Как блочное сжатие экономит видеопамять и держит стабильный FPS.
ИнструкцияКак открыть и конвертировать DDS
PNG, JPG и обратно — пошагово и без лишних программ.
СравнениеDDS против PNG, TGA и WebP
Какой формат текстур выбрать под вашу задачу.