TXD
Материал из GTAModding.ru
TXD (TeXture Dictionary) - формат RenderWare, использующийся Rockstar North для хранения игровой графики в GTA 3, GTA: Vice City, GTA: San Andreas, а также Bully, The Warriors и Manhunt. TXD - это платформозависимый формат (англ. platform specific texture dictionary), таким образом файлы этого формата имеют практически идентичную структуру на одной и той же платформе, но сильно различаются на разных платформах.
Содержание |
Основные данные
Все текстуры в GTA третьей серии закодированы в виде бинарных потоков - RenderWare binary stream file, специализированных для движка RenderWare, используемого в игре. Все бинарные потоки с текстурами имеют расширение TXD (TeXture Dictionary), для просмотра и редактирования иерархии которого существует программа RW Analyze от Steve M. Для создания, изменения текстур в архиве и их типа компрессии так же используют специальные программы, а именно PS2 TXD Viewer (только для просмотра текстур на PS2), G-TXD, TXD Workshop и др.
Типы текстур
Текстуры в GTA можно разделить на 4-битные (только для PS2), 8-битные, 16-битные, 32-битные. Разрешения всех текстур в ГТА обычно кратно N^2, т.е. встречаются 2х2, 4х4, 2x4 и т.д. В некоторых модах можно встретить нестандартные разрешения текстур, использование которых так же не запрещено документацией RenderWare, но движок игры всё равно выделит память на текстуру столько же, сколько и на кратную двум, поэтому использование нестандартных расширений текстур не рационально.
Структура
1. Архив текстур PC и X-BOX (TXD)
* Texture Dictionary o Struct - 2b - количество текстур в архиве (в версиях до 3.6.0.0 (или ранее) - 4 байта) - 2b - deviceId (начиная с версии 3.6.0.0 (или ранее)) - 1 для D3D8-платформы, 2 - для D3D9. o Texture Native - данная секция в TXD может повторяться несколько раз, в зависимости от количества текстур в архиве. + Struct - заголовок с именем и параметрами текстуры + тело текстуры + Extension - дополнение подсекции (Плагин анизотропной фильтрации в GTA San Andreas и GTA Vice City) o Extension - дополнение секции (не используется)
2. Архив текстур PS2 (TXD)
* Texture Dictionary o Struct - 2b - количество текстур в архиве, 2b - неизвестно o Texture Native - данная секция в TXD может повторяться несколько раз, в зависимости от количества текстур в архиве. + Struct - 4b - платформа (строка "PS2"), 4b- флаги фильтра + String - имя текстуры + String - имя альфа-канала текстуры + Struct # Struct - 4b- ширина, 4b - высота, 4b - битность, неизвестно # Struct - 80 bytes неизвестно, пиксели/индексы (80 bytes неизвестно, палитра) + Extension - дополнение секции # Sky Mipmap Val (RW Section) - 4 bytes неизвестно o Extension - дополнение секции (0b - пусто - не используется)
Альфа канал
К изображениям в TXD также применим альфа канал. Разрешение текстуры и её альфа-канала всегда равны.
Альфа канал, также известный как маска - это черно-белое изображение, применяется с целью создания эффекта частичной прозрачности, либо с целью определения контуров, если модель выполняет роль спрайта в игровой сцене. Таким образом черные сектора альфа-канала определяют полную прозрачность, белые - полную видимость, а участки с разными оттенками серого определяют частичную прозрачность накладываемой на объект текстуры. Примеры - текстуры стекла, растительности, particle-эффектов, шрифтов и т.д.
Для наглядности возьмём текстуру и её альфа-канал:
В итоге мы получим красный текст.
Mip Mapping
TXD всех версий так же поддерживает хранение уровней детализации текстур. Но для текстур низкого и среднего качества, в большинстве случаев используемых в GTA третьей серии, использовать mip mappng не имеет особого смысла. Более подробнее описано в статье MIP-текстурирование.
Swizzling
Важно отметить, что на PS2 растр может хранится с использованием swizzling'а и для корректного отображения в графическом редакторе нужно преобразовать текстуру.
Компрессия текстур в TXD
ПК и XBox-версии GTA3, GTA VC и GTA SA поддерживают TXD с компрессированными текстурами. Алгоритмы компрессии, применяемые для текстур в игре - DXT1 (для текстур без альфа-канала), DXT3 (для текстур с альфа-каналом) и DXT5 (улучшенный алгоритм для текстур с альфа-каналом). Использование в модах текстур с компрессией существенно снижает размер мода, при этом качество текстуры падает не очень существенно. Тем более все современные видеокарты уже умеют работать с компрессованными текстурами. Компрессию не рекомендуется применять для текстур particle-эффектов, где после компрессии в альфа-канале могут наблюдаются сильные искажения кривой градиента, что очень заметно проявляется в игре.
Особенности TXD на платформе XBOX
В TXD-файлах, содержащихся в IMG-архиве XboX версий GTA 3 (не путать с модом GTA 3 X-BOX version) и GTA VC, применён специальный тип компрессии. Для их распаковки существует утилита dffxbox2pc от АК-73 aka Alex. После её применения TXD-архив открывается любым TXD-редактором (правда альфа-канал читается неверно).
GENERIC текстуры
В GTA3, GTA VC и GTA SA для моделей игровой карты можно создавать и использовать TXD вне IMG-архива. Этот тип текстур считается общим, они ищутся и загружаются движком автоматически, при загрузке игры, по адресу, указанному в gta3.dat или default.dat. Данный тип внедрён специально только для разработчиков игры, для прямого редактирования текстур без обращения к IMG-архиву игры, а так же для подгонки системных требований игры под требования заказчика. Соответственно разработчиками модов эта возможность нигде не применяется (кроме GTA Stories) и задокументирована Херомантом007 только на gtamodding.ru и gtamaps.net.
В исполняемый файл игры зашито только одно единственное имя GENERIC'а карты - generic.txd. Механизм использования множества внешних текстур очень простое - в любое место игровой директории размещается TXD-файл с любым именем (естественно на английском языке), затем прописываем путь к TXD в gta3.dat или default.dat, ну а после в секции objs ИДЕшника в значении TexDictName записываем generic. Всё, теперь определённая игровая модель привязана к generic-текстурам. Например, я создал в папке TXD архив blablabla.txd, добавил строчку в gta3.dat "TEXDICTION TXD\BLABLABLA.TXD" и в каком-то IDE у меня есть строчечка "5000, ind_land666, generic, 1, 300, 0". Для модели ind_land666 игра будет искать текстуры во всех generic-текстурах, в том числе и в blablabla.txd.
Для GTA SA можно использовать собственные имена внешних TXD-архивов в IDE, для этого его нужно просто прописать в секции txdp как дочернюю к generic'у, например "blablabla, generic", соответственно, и в секции obj можно написать "5000, ind_land666, blablabla, 300, 0" (обычно делается для того, чтобы после готовности карты можно было спокойно перенести TXD в IMG-архив).
Редакторы TXD
Версия игры | Название | Авторы |
---|---|---|
Magic.TXD | DK22Pac, The_GTA | |
TXD Workshop | JernejL | |
TXD Builder | Steve-M | |
PS2 TXD Viewer | Steve-M | |
PS2 TXD Mod | Studio "Exclusive" | |
TXD 2048 | Lego | |
TXDFucker | Lego | |
G-TXD | REspawn | |
TxdGen | The_GTA | |
ViceTXD | Spooky |
Форматы файлов | .bik • .bsp • .col • .dff • .grf • .gxt • .ifp • .inst • .fxp • .mls • .pak • .rib • .raw/.sdt/.lst • .scc • .spl • .txd |
Инструменты | Clump Viewer • Col-IO • Collision File Editor II • DFF Viewer • G-Tools • Kam's Max Scripts • PS2 TXD Mod PS2 TXD Viewer • RW Analyze • ViceTXD • TXD Workshop • ZModeler |