Что такое формат файла VTF?
Файл .vtf - это файл Valve Texture Format, проприетарный бинарный контейнер текстур, используемый движком Valve Source, впервые представленный в Half-Life 2 в ноябре 2004 года. Файлы VTF хранят сжатые или несжатые данные текстур, готовые для GPU, вместе с предварительно созданной пирамидой mip-уровней и небольшой миниатюрой, сжатой в DXT1, которая используется для предварительного просмотра в движке.
Файл начинается с 4-байтовой магической сигнатуры VTF\0 (hex 56 54 46 00), за которой следует пара основной и дополнительной версий (основная всегда 7; дополнительная варьируется от 0 до 6). Заголовок кодирует размеры изображения, количество кадров, глубину (для объемных текстур), количество граней кубической карты, вектор цвета отражательной способности и перечисление форматов пикселей. В версии 7.3 был добавлен расширяемый раздел данных ресурсов для произвольных фрагментов метаданных, определяемых движком.
Поддерживаемые форматы пикселей включают DXT1 (4 bpp), DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp) и RGBA16161616F (64 bpp HDR). Размеры изображений должны быть степенями двойки, обычно до 4096×4096.
Текстуры .vtf всегда используются в паре с файлом .vmt (Valve Material Type), который определяет параметры шейдеров, тип поверхности и режимы смешивания, ссылаясь на .vtf по имени. VTFEdit является стандартным инструментом сообщества для создания и редактирования файлов .vtf вне Valve SDK.
В Source 2 эквивалентом скомпилированной текстуры является .vtex_c, создаваемый конвейером VTex, а не VTFEdit.
Безопасность и защита
РИСК: LOWVTF - это файл данных текстуры без исполняемого кода. Вредоносно созданные файлы VTF теоретически могут вызвать ошибки парсера в VTFLib/VTFEdit (переполнение буфера в полях размера или формата), но это теоретическая проблема. На практике открывайте файлы VTF только из доверенных источников игр или модов.
Детали формата
в двух словахПрограммы, открывающие файлы VTF
Технические подробности
глубокая спецификация| Магические байты | 56 54 46 00 («VTF\0») по смещению 0; основная версия (всегда 7) и дополнительная версия (0-6) по смещению 4 в виде двух DWORD |
| Порядок байтов | Little-endian (от младшего к старшему) |
| Форматы пикселей | DXT1 (4 bpp), DXT3, DXT5 (8 bpp), BGR888 (24 bpp), BGRA8888 (32 bpp), RGBA16161616F (64 bpp HDR); выбираются перечислением форматов в заголовке |
| Пирамида mip-уровней | Полная цепочка mip-уровней, хранящаяся от самого маленького до самого большого; количество уровней указано в заголовке; используется для LOD-рендеринга |
| Миниатюра | Небольшое превью низкого разрешения, сжатое в DXT1, хранящееся в области заголовка; используется движком для быстрой идентификации ресурса |
| Типы текстур | 2D-текстуры, кубические карты (6 граней), объемные/3D-текстуры, анимированные спрайты (многокадровые), карты нормалей |
| Ограничения размеров | Требуется степень двойки (до версии 7.5); типичный максимум 4096x4096; некоторые версии Source поддерживают до 16384x16384 |
| Раздел ресурсов | Расширяемые блоки данных ресурсов, добавленные в версии 7.3, позволяющие хранить произвольные метаданные; используются для данных листов частиц и т. д. |
| Типичный размер | От 4 КБ до 32 МБ в зависимости от разрешения, уровней детализации и формата пикселей |
| Парный формат | Всегда используется с файлом .vmt (Valve Material Type), определяющим шейдер, режим смешивания и тип поверхности - .vtf содержит только данные пикселей |
| Сжатие | Нет сжатия на уровне файла; сжатие текстур GPU (DXT1/DXT5/BCn) встроено в сохраненные данные пикселей |
| Эквивалент в Source 2 | .vtex_c (скомпилирован конвейером VTex); VTF остается актуальным для игр на движке Source (Team Fortress 2, CS:GO и др.) |
| Выпущен | 2004 (Half-Life 2 and Source engine launch) |
| Последняя версия | VTF 7.5 (Source engine); VTF 7.6 (Source 2 / Portal 2 on Linux) |
| Спецификация | developer.valvesoftware.com |
Конвертации VTF
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах VTF.