Skip to content

DDS Texture Unifier is a tool that combines split textures in the "DDS" format from the Warface game into a single file compatible with regular programs and older versions of CryEngine.

License

Notifications You must be signed in to change notification settings

ocwf-module/DDS-Texture-Unifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

DDS Texture Unifier

DDS Texture Unifier — это инструмент, который объединяет разделённые текстуры формата "DDS" из игры Warface (*.dds.0, *.dds.1, *.dds.2 и т.д. и т.п.) в единый файл, совместимый с обычными программами и старыми версиями CryEngine.

Формат "DDS" (DirectDraw Surface) — формат хранения данных, разработанный корпорацией Microsoft для использования в библиотеке DirectX.

Было:

image

Стало:

image

Зачем нужно разделение файлов формата "DDS" и где оно применяется?

Файлы формата DDS можно разделить для последующего использования в технологии "Textures Streaming" в движке CryEngine. Это позволяет загружать текстуры напрямую с диска во время игры, что улучшает производительность. Изначально текстуры загружаются не целиком, а частями, в зависимости от того, насколько далеко они находятся и смотрит ли камера на объект с этой текстурой в этот момент, что позволяет снизить нагрузку на видеокарту и оперативную память соответственно, ведь загружать все текстуры в максимальном качестве уже нет никакого смысла. Однако не все версии CryEngine поддерживают эту технологию, чтобы использовать такие текстуры в старых версиях движка, их нужно объединить в один файл.

Как здесь замешан DDS_Unpacking.exe? А также колхозное объяснение принципа работы данной программы

Сейчас для объединения текстур из новых версий игры Warface используется программа "DDS_Unpacking.exe", автор которой неизвестен, в принципе, как и исходный код данной программы, как она работает точно, лично мне до сих пор неизвестно. Программа была написана очень давно, где-то в 2013 году, если не раньше, работает она, по сегодняшним меркам, довольно долго, использовать её в больших масштабах можно только с bat-файлом, который дополнительно ещё немного замедляет скорость обработки. Поэтому я решил написать собственную программу, но перед этим нужно было изучить принцип работы "DDS_Unpacking.exe", сравнив исходные файлы и результат его работы, получился следующий порядок:

  1. Создаётся файл с названием, которое берётся из файла "*.dds.0", только уже без окончания ".0";
  2. Первые 128 бит (заголовок файла) берутся из файла "*.dds.0" и записываются в наш файл "*.dds";
  3. Затем, в порядке убывания, в наш файл записывается содержимое файлов с расширениями от ".dds.*" до ".dds.1", где на месте "*" — максимальное порядковое число-расширение, которое имеет наша разделённая текстура;
  4. Ну и в конец нашего файла записывается отстаток из файла "*.dds.0", который остался после извлечения первых 128 бит данных.

Имея данные вводные, я написал свою программу, которая будет работать по данному алгоритму со всеми файлами в заданной директории её расположения. Также в неё дополнительно была встроена функция автоматического удаления исходных файлов (с вашего согласия), чтобы уменьшить вес директории, в которой происходило объединение, ведь в большинстве своём исходные файлы нам уже не нужны. Замена ли это для "DDS_Unpacking.exe" в рамках игры Warface? Возможно, но чтобы узнать точно, нужно протестировать данную программу во всех ситуациях, буду рад обратной связи.

About

DDS Texture Unifier is a tool that combines split textures in the "DDS" format from the Warface game into a single file compatible with regular programs and older versions of CryEngine.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages