Ru/Valve Texture Format: Difference between revisions
m (obsolete language category) |
|||
(13 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{lang|Valve Texture Format}} | ||
| | |||
}} | |||
{{finishtranslation | {{finishtranslation}} | ||
{{toc-right}} | {{toc-right}} | ||
'''Valve Texture Format''' ('''VTF''') - это проприетарный формат | '''Valve Texture Format''' ('''VTF''') - это проприетарный формат {{L|texture|текстур}} использующийся движком {{L|Source}}. VTF файлы обычно задействуются через {{L|Material|VMT}} файлы вместо использования напрямую, что предоставляет возможность их повторного использования. | ||
VTF файлы могут быть созданы из изображений в формате | VTF файлы могут быть созданы из изображений в формате {{L|TGA}} с помощью Source SDK Tool {{L|Vtex (Source 1)|VTEX}} или из большинства основных форматов изображений с помощью {{L|Valve_Texture_Format#.D0.98.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D1.8B|сторонних инструментов}}. И текстуры и материалы хранятся в подпапках <code>game_dir/materials/</code>. | ||
{{ | {{Note|VTF файлы должны быть в размерности [[Wikipedia:Powers of two#The first 96 powers of two|степени двойки]], например: 64x64, 128x128, 256x256, 512x512 и т.д.}} | ||
{{Note|Хотя технически это ограничение можно обойти с помощью альтернативных программ для конвертации текстур, например SprayMaker 5000}} | |||
== Возможности == | == Возможности == | ||
Формат VTF может хранить двумерную текстуру, либо | Формат VTF может хранить двумерную текстуру, либо {{L|$envmap|карту окружения}}, либо объемную текстуру. Каждая из этих текстур может иметь несколько кадров. | ||
* Карта окружения (environment map) - это шестигранная [[Wikipedia:cube map|кубическая карта]]. | * Карта окружения (environment map) - это шестигранная [[Wikipedia:cube map|кубическая карта]]. | ||
* Объемная текстура (volumetric texture) - это текстура с глубиной, у которой каждый кадр это слой в третьем измерении. То есть объемная текстура 16x16x16 имеет 16 текстур размером 16x16 сложенных друг на друге (как стопка блинчиков). Этот формат используется внутренне движком Source и у вас не должно быть никакой потребности в создании такой текстуры самому. | * Объемная текстура (volumetric texture) - это текстура с глубиной, у которой каждый кадр это слой в третьем измерении. То есть объемная текстура 16x16x16 имеет 16 текстур размером 16x16 сложенных друг на друге (как стопка блинчиков). Этот формат используется внутренне движком Source и у вас не должно быть никакой потребности в создании такой текстуры самому. | ||
* Для каждого кадра и грани, файл VTF содержит и оригинальное изображение и серию | * Для каждого кадра и грани, файл VTF содержит и оригинальное изображение и серию {{L|mipmap}}'ов, использующихся для рендера текстуры на различных расстояниях. Так как каждый последующий mipmap имеет 1/2 размера (ширины и высоты) предыдущего, оригинальное изображение должно быть в размерности степени двойки. Не смотря на то, что оригинальное изображение может быть прямоугольным, квадратные mipmap'ы хранятся более эффективно в VTF. | ||
* Начальный кадр (для анимаций) | * Начальный кадр (для анимаций) | ||
* Размер | * Размер {{L|$bumpmap|бамп мапы}} | ||
* Значение | * Значение {{L|$reflectivity|коэффициента отражения}} для {{L|VRAD}} | ||
* Копия VTF небольшого разрешения для сэмплирования цвета движком. | * Копия VTF небольшого разрешения для сэмплирования цвета движком. | ||
Line 30: | Line 29: | ||
* Значение [[Wikipedia:Cyclic redundancy check|CRC]] для обнаружения "битых" данных. | * Значение [[Wikipedia:Cyclic redundancy check|CRC]] для обнаружения "битых" данных. | ||
* An [[Wikipedia:UV mapping|U/V]] LOD control. This is the highest mipmap which should be loaded when game's Texture Detail setting is "High" (<code>mat_picmip 0</code>). An U LOD Control value of 11 selects the mipmap which is 2048 pixels (2<sup>11</sup>) across. {{note|Since users are currently only presented with one texture detail setting above High, there is little point setting this value to anything except 50% or 100% of your texture's size.}} | * An [[Wikipedia:UV mapping|U/V]] LOD control. This is the highest mipmap which should be loaded when game's Texture Detail setting is "High" (<code>mat_picmip 0</code>). An U LOD Control value of 11 selects the mipmap which is 2048 pixels (2<sup>11</sup>) across. {{note|Since users are currently only presented with one texture detail setting above High, there is little point setting this value to anything except 50% or 100% of your texture's size.}} | ||
* Данные | * Данные {{L|Animated Particles|animated particle sheet}}. | ||
* Расширенные настройки текстуры. Это коллекция из 32 флагов, ни один из которых не используется в Valve. В отличие от встроенных флагов VTF, эти могут быть определены специально для определенной игры. | * Расширенные настройки текстуры. Это коллекция из 32 флагов, ни один из которых не используется в Valve. В отличие от встроенных флагов VTF, эти могут быть определены специально для определенной игры. | ||
Line 95: | Line 94: | ||
|} | |} | ||
[[ | [[File:Dxtn_comparison.jpg|right|100px|thumb|Сравнение влияния DXT сжатия на различные типы изображений]] | ||
==== Сжатие HDR ==== | ==== Сжатие HDR ==== | ||
Line 124: | Line 123: | ||
== Флаги изображений == | == Флаги изображений == | ||
{{tip | {{tip|Большинство настроек шейдера конфигурируются с помощью {{LCategory|List of Shader Parameters|параметров материала}}, не с помощью текстурных флагов.}} | ||
VTF может содержать следующие флаги (версия 7.5): | VTF может содержать следующие флаги (версия 7.5): | ||
Line 141: | Line 140: | ||
| Anisotropic Sampling || 0x0010 || Качественная фильтрация текстур. | | Anisotropic Sampling || 0x0010 || Качественная фильтрация текстур. | ||
|- | |- | ||
| Hint DXT5 || 0x0020 || Используется в | | Hint DXT5 || 0x0020 || Используется в {{L|skybox}}es. Убедитесь, что края бесшовные. | ||
|- | |- | ||
| PWL Corrected || 0x0040 || Цель неизвестна. | | PWL Corrected || 0x0040 || Цель неизвестна. | ||
Line 186: | Line 185: | ||
|- | |- | ||
| Nice Filtered || 0x1000000 || использование | | Nice Filtered || 0x1000000 || использование {{L|NICE filtering|NICE фильтрация}} для создания MIP-карт. (Для внутреннего использования VTEX?) | ||
|- | |- | ||
| Clamp U || 0x2000000 || Координаты зажима U (для объемных текстур). | | Clamp U || 0x2000000 || Координаты зажима U (для объемных текстур). | ||
Line 192: | Line 191: | ||
| Vertex Texture || 0x4000000 || Может использоваться как вершинная текстура | | Vertex Texture || 0x4000000 || Может использоваться как вершинная текстура | ||
|- | |- | ||
| SSBump ||0x8000000 ||Текстура - это | | SSBump ||0x8000000 ||Текстура - это {{L|$ssbump|SSBump}}. (''SSB'') | ||
|- | |- | ||
| Border ||0x20000000 || Привязка к цвету границы по всем координатам текстуры | | Border ||0x20000000 || Привязка к цвету границы по всем координатам текстуры | ||
Line 218: | Line 217: | ||
# Записи ресурсов | # Записи ресурсов | ||
#* VTF Данные изображения с низким разрешением | #* VTF Данные изображения с низким разрешением | ||
#* | #* {{L|Valve_Texture_Format|Другие данные о ресурсах}} | ||
#* Для каждого Mipmap (от наименьшего к наибольшему) | #* Для каждого Mipmap (от наименьшего к наибольшему) | ||
#** Для каждого кадра (от первого до последнего) | #** Для каждого кадра (от первого до последнего) | ||
Line 351: | Line 350: | ||
=== История версий === | === История версий === | ||
'''v7.5''' | '''v7.5''' | ||
* | * Выпущено 19 июля 2010 г. как часть {{L|Alien Swarm}} | ||
* | * Побитовый эквивалент v7.4. | ||
* | * Переопределяет и изменяет два флага текстуры. | ||
* | * Сферы теперь официально избыточны. | ||
* | * Большинство изменений внутри процесса создания VTF с помощью VTEX, например Форматы MipMap fading, Alpha decay и XBox360. | ||
'''v7.4''' | '''v7.4''' | ||
* | * Выпущена 10 октября 2007 г. как часть [[wikipedia:The_Orange_Box|The Orange Box]]. | ||
* | * Побитовый эквивалент версии 7.3. | ||
* | * Решает проблемы, связанные с тем, как выполняется гамма-коррекция текстур для ТВ-вывода на XBOX 360 в сочетании с поиском памяти выгружаемого пула ОС. | ||
'''v7.3''' | '''v7.3''' | ||
* | * Добавлена расширяемая структура, ориентированная на ресурсы. | ||
* | * Добавлены ресурсы CRC, управления уровнем детализации текстуры и листа, а также ресурсы изображений с обратной совместимостью и изображений с низким разрешением. | ||
* | * Добавлено несколько форматов трафаретов глубины, зависящих от поставщика (для внутреннего использования в движке), а также форматы карт нормалей и линейные несжатые форматы. | ||
* | * Выпущена 18 сентября 2007 г. как часть {{L|Team Fortress 2}} бета. | ||
'''v7.2''' | '''v7.2''' | ||
* | * Добавлена поддержка объемных текстур. | ||
* | * Выпущен 23 сентября 2005 г. как {{L|Steam}} обновление двигателя. | ||
'''v7.1''' | '''v7.1''' | ||
* | * Добавлена поддержка карты сфер для карт среды. (Это было предназначено для поддержки DirectX 6, которая позже была сокращена.) | ||
'''v7.0''' | '''v7.0''' | ||
* | * Изначальный выпуск. (Только для внутреннего выпуска, однако некоторые текстуры v7.0 попали в опубликованный заголовок.) | ||
=== | === Реализация === | ||
Пример независимой от Steam реализации формата файла изображения VTF можно найти в библиотеке LGPL C / C ++. {{L|VTFLib}}. | |||
== Инструменты == | == Инструменты == | ||
; Просмотр | ; Просмотр | ||
: | : {{L|VTF Shell Extensions|Windows thumbnail handler}} (Windows XP+) | ||
: | : {{L|VTF Explorer}} (Windows; можно исследовать внутри GCFs) | ||
: [ | : [https://forre.st/vtf gdk-pixbuf-vtf] (Gnome\Nautilus\Eog) | ||
: [ | : [https://www.irfanview.com/plugins.htm IrfanView plugin] | ||
: [ | : [https://www.filedropper.com/imageviewer002 Программа просмотра изображений Leadworks (supports VTF)] {{Dead_link}} | ||
; Редактирование | ; Редактирование | ||
: | : {{L|VTFEdit}} (GUI) и {{L|VTFCmd}} ({{L|command line}}) | ||
: | : {{L|Photoshop VTF Plugin|Photoshop Plug-in}} (6 и вверх) | ||
: [ | : [https://code.google.com/p/gimp-vtf/ GIMP Plug-in] | ||
: [ | : [https://nemesis.thewavelength.net/index.php?p=50 Paint.NET Plug-in] | ||
: | : {{L|3DSMax VTF plugin|3DSMax plugin}} (версии с 6 по 2009) | ||
: [http://www.riintouge.com/VIDE/ VIDE] | : [http://www.riintouge.com/VIDE/ VIDE] | ||
; Преобразование между версиями | ; Преобразование между версиями | ||
: [https://github.com/geotavros/vtf75tovtf74/releases 7.5 to 7.4 Batch Converter] | : [https://github.com/geotavros/vtf75tovtf74/releases 7.5 to 7.4 Batch Converter] | ||
{{ACategory|Glossary}} | |||
{{ACategory|Material System}} | |||
{{ACategory|File formats}} | |||
== См. также == | == См. также == | ||
* | * {{L|Creating a Material|Создание материала}} | ||
* | * {{L|Material|Valve Material Type}} |
Latest revision as of 04:08, 22 August 2024

You can help by finishing the translation.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article complies with the alternate languages guide.
Valve Texture Format (VTF) - это проприетарный формат текстур использующийся движком Source . VTF файлы обычно задействуются через VMT файлы вместо использования напрямую, что предоставляет возможность их повторного использования.
VTF файлы могут быть созданы из изображений в формате TGA с помощью Source SDK Tool VTEX или из большинства основных форматов изображений с помощью сторонних инструментов . И текстуры и материалы хранятся в подпапках game_dir/materials/
.


Возможности
Формат VTF может хранить двумерную текстуру, либо карту окружения , либо объемную текстуру. Каждая из этих текстур может иметь несколько кадров.
- Карта окружения (environment map) - это шестигранная кубическая карта.
- Объемная текстура (volumetric texture) - это текстура с глубиной, у которой каждый кадр это слой в третьем измерении. То есть объемная текстура 16x16x16 имеет 16 текстур размером 16x16 сложенных друг на друге (как стопка блинчиков). Этот формат используется внутренне движком Source и у вас не должно быть никакой потребности в создании такой текстуры самому.
- Для каждого кадра и грани, файл VTF содержит и оригинальное изображение и серию mipmap 'ов, использующихся для рендера текстуры на различных расстояниях. Так как каждый последующий mipmap имеет 1/2 размера (ширины и высоты) предыдущего, оригинальное изображение должно быть в размерности степени двойки. Не смотря на то, что оригинальное изображение может быть прямоугольным, квадратные mipmap'ы хранятся более эффективно в VTF.
- Начальный кадр (для анимаций)
- Размер бамп мапы
- Значение коэффициента отражения для VRAD
- Копия VTF небольшого разрешения для сэмплирования цвета движком.
Ресурсы
В VTF версии 7.3 появилась расширяемая система ресурсов. Вы можете хранить что угодно, но движок Source распознает только следующие данные:
- Значение CRC для обнаружения "битых" данных.
- An U/V LOD control. This is the highest mipmap which should be loaded when game's Texture Detail setting is "High" (
mat_picmip 0
). An U LOD Control value of 11 selects the mipmap which is 2048 pixels (211) across.Примечание:Since users are currently only presented with one texture detail setting above High, there is little point setting this value to anything except 50% or 100% of your texture's size.
- Данные animated particle sheet .
- Расширенные настройки текстуры. Это коллекция из 32 флагов, ни один из которых не используется в Valve. В отличие от встроенных флагов VTF, эти могут быть определены специально для определенной игры.
Форматы данных изображения
VTF может хранить в себе данные в различных форматах. Некоторые форматы предназначены для движка, некоторые только как промежуточные форматы для преобразований. Несжатые форматы не теряют данных, а сжатые (DXT) - теряют.
Таблица форматов данных изображений
Формат | Red Bits | Green Bits | Blue Bits | Alpha Bits | Total Bits | Сжатие | Поддерживается | Комментарий |
---|---|---|---|---|---|---|---|---|
A8 | 0 | 0 | 0 | 8 | 8 | False | True | |
ABGR8888 | 8 | 8 | 8 | 8 | 32 | False | True | Несжатая текстура с альфа-каналом |
ARGB8888 | 8 | 8 | 8 | 8 | 32 | False | True | |
BGR565 | 5 | 6 | 5 | 0 | 16 | False | True | Несжатая текстура, ограниченная глубина цвета |
BGR888 | 8 | 8 | 8 | 0 | 24 | False | True | Несжатая текстура |
BGR888_BLUESCREEN | 8 | 8 | 8 | 0 | 24 | False | True | |
BGRA4444 | 4 | 4 | 4 | 4 | 16 | False | True | Несжатая текстура с альфа-каналом, половина глубины цвета |
BGRA5551 | 5 | 5 | 5 | 1 | 16 | False | True | |
BGRA8888 | 8 | 8 | 8 | 8 | 32 | Either | True | Также используется для сжатых HDR |
BGRX5551 | 5 | 5 | 5 | 1 | 16 | False | True | |
BGRX8888 | 8 | 8 | 8 | 8 | 32 | False | True | |
DXT1 | N/A | N/A | N/A | 0 | 4 | True | True | Стандартное сжатие, без альфа-канала |
DXT1_ONEBITALPHA | N/A | N/A | N/A | 1 | 4 | True | True | Стандартное сжатие, однобитный альфа-канал |
DXT3 | N/A | N/A | N/A | 4 | 8 | True | True | Uninterpolated Alpha |
DXT5 | N/A | N/A | N/A | 4 | 8 | True | True | Interpolated Alpha (recommended) |
I8 | N/A | N/A | N/A | N/A | 8 | False | True | Luminance (Grayscale) |
IA88 | N/A | N/A | N/A | 8 | 16 | False | True | Luminance (Grayscale) |
P8 | N/A | N/A | N/A | N/A | 8 | False | False | Paletted |
RGB565 | 5 | 6 | 5 | 0 | 16 | False | True | |
RGB888 | 8 | 8 | 8 | 0 | 24 | False | True | |
RGB888_BLUESCREEN | 8 | 8 | 8 | 0 | 24 | False | True | |
RGBA16161616 | 16 | 16 | 16 | 16 | 64 | False | True | Integer HDR Format |
RGBA16161616F | 16 | 16 | 16 | 16 | 64 | False | True | Floating Point HDR Format |
RGBA8888 | 8 | 8 | 8 | 8 | 32 | False | True | |
UV88 | N/A | N/A | N/A | N/A | 16 | False | True | Несжатый формат du/dv |
UVLX8888 | N/A | N/A | N/A | N/A | 32 | False | True | |
UVWQ8888 | N/A | N/A | N/A | N/A | 32 | False | True |
Сжатие HDR
HDR текстуры могут храниться в сжатой форме используя формат BGRA8888.
Эта формула показывает как преобразовать эти цвета в целочисленный HDR (integer):
RGB = RGB * (A * 16)
и в HDR с плавающей запятой (floating point):
RGB = (RGB * (A * 16)) / 262144
Выбор формата изображений
Не смотря на то, что VTF предоставляет поддержку широкого ряда форматов изображений, есть только несколько форматов, которые вы, скорее всего, будете использовать. Эти форматы и критерии выбора описаны ниже.
- BGR888: используйте для текстур без альфа-канала и с качественным градиентом (например, карт нормалей и световых ореолов (light halo)).
- BGRA8888: используйте для текстур с альфа-каналом и с качественным градиентом (например, карт нормалей и световых ореолов). Он также может быть использован, чтобы получать высококачественные текстуры.
- DXT1: используйте этот формат для обычных текстур без альфа-канала.
- DXT3: используйте этот формат для обычных текстур с альфа-каналом и резкими градиентами.
- DXT5: используйте этот формат для обычных текстур с альфа-каналом и плавными градиентами.
- I8: используйте этот формат для черно-белых текстур без альфа-канала и с качественным градиентом (например, световые ореолы).
- IA88: используйте этот формат для черно-белых текстур с альфа каналом и качественным градиентом (например, дым или световые ореолы).
- RGBA16161616F: используйте этот формат для HDR текстур.
- UV88: используйте этот формат для DuDv карт.
Технические детали о различных форматах сжатия DXT.
Флаги изображений

VTF может содержать следующие флаги (версия 7.5):
Флаг | Значение | Комментарий |
Point Sampling | 0x0001 | Низкое качество, фильтрация текстур "пиксельная графика". |
Trilinear Sampling | 0x0002 | Фильтрация текстур среднего качества. |
Clamp S | 0x0004 | Координаты зажима S. |
Clamp T | 0x0008 | Координаты зажима T. |
Anisotropic Sampling | 0x0010 | Качественная фильтрация текстур. |
Hint DXT5 | 0x0020 | Используется в skybox es. Убедитесь, что края бесшовные. |
PWL Corrected | 0x0040 | Цель неизвестна. |
SRGB | n/a | Использует пространство RGB. Полезно для высоких гамм. Не рекомендуется в версии 7.5. |
No Compress | 0x0040 | Сжатие DXT не используется. Устаревшее |
Normal Map | 0x0080 | Текстура - это карта нормалей. |
No Mipmaps | 0x0100 | Отрисовывать только самые большие MIP-карты. (Не удаляет существующие MIP-карты, а просто отключает их.) |
No Level Of Detail | 0x0200 | Не зависит от настроек разрешения текстуры. |
No Minimum Mipmap | 0x0400 | Если установлено, загружайте MIP-карты размером менее 32x32 пикселей. |
Procedural | 0x0800 | Текстура - это процедурная текстура (код может ее изменять). |
One Bit Alpha | 0x1000 | Используется однобитовый альфа-канал. |
Eight Bit Alpha | 0x2000 | Используется восьмибитный альфа-канал. |
Environment Map | 0x4000 | Текстура - это карта окружения. |
Render Target | 0x8000 | Текстура - это цель рендеринга. |
Depth Render Target | 0x10000 | Текстура - это цель рендеринга глубины. |
No Debug Override | 0x20000 | |
Single Copy | 0x40000 | |
Pre SRGB | 0x80000 | Исправление SRGB уже применено |
One Over Mipmap Level In Alpha | 0x80000 | Заполните альфа-канал значением 1 / Mipmap Level. Устарело (для внутреннего использования VTEX?) |
Premultiply Color By One Over Mipmap Level | 0x100000 | (Для внутреннего использования VTEX?) |
Normal To DuDv | 0x200000 | Текстура - это карта DuDv. (Для внутреннего использования VTEX?) |
Alpha Test Mipmap Generation | 0x400000 | (Для внутреннего использования VTEX?) |
No Depth Buffer | 0x800000 | Не Z-буферизация для обработки видео обычно расстояние визуализации. |
Nice Filtered | 0x1000000 | использование NICE фильтрация для создания MIP-карт. (Для внутреннего использования VTEX?) |
Clamp U | 0x2000000 | Координаты зажима U (для объемных текстур). |
Vertex Texture | 0x4000000 | Может использоваться как вершинная текстура |
SSBump | 0x8000000 | Текстура - это SSBump . (SSB) |
Border | 0x20000000 | Привязка к цвету границы по всем координатам текстуры |
Формат файла
Описание формата VTF.
Структура формата
7.2 | 7.3 + |
---|---|
|
|
Перечисления
enum
{
IMAGE_FORMAT_NONE = -1,
IMAGE_FORMAT_RGBA8888 = 0,
IMAGE_FORMAT_ABGR8888,
IMAGE_FORMAT_RGB888,
IMAGE_FORMAT_BGR888,
IMAGE_FORMAT_RGB565,
IMAGE_FORMAT_I8,
IMAGE_FORMAT_IA88,
IMAGE_FORMAT_P8,
IMAGE_FORMAT_A8,
IMAGE_FORMAT_RGB888_BLUESCREEN,
IMAGE_FORMAT_BGR888_BLUESCREEN,
IMAGE_FORMAT_ARGB8888,
IMAGE_FORMAT_BGRA8888,
IMAGE_FORMAT_DXT1,
IMAGE_FORMAT_DXT3,
IMAGE_FORMAT_DXT5,
IMAGE_FORMAT_BGRX8888,
IMAGE_FORMAT_BGR565,
IMAGE_FORMAT_BGRX5551,
IMAGE_FORMAT_BGRA4444,
IMAGE_FORMAT_DXT1_ONEBITALPHA,
IMAGE_FORMAT_BGRA5551,
IMAGE_FORMAT_UV88,
IMAGE_FORMAT_UVWQ8888,
IMAGE_FORMAT_RGBA16161616F,
IMAGE_FORMAT_RGBA16161616,
IMAGE_FORMAT_UVLX8888
};
enum
{
// Flags from the *.txt config file
TEXTUREFLAGS_POINTSAMPLE = 0x00000001,
TEXTUREFLAGS_TRILINEAR = 0x00000002,
TEXTUREFLAGS_CLAMPS = 0x00000004,
TEXTUREFLAGS_CLAMPT = 0x00000008,
TEXTUREFLAGS_ANISOTROPIC = 0x00000010,
TEXTUREFLAGS_HINT_DXT5 = 0x00000020,
TEXTUREFLAGS_PWL_CORRECTED = 0x00000040,
TEXTUREFLAGS_NORMAL = 0x00000080,
TEXTUREFLAGS_NOMIP = 0x00000100,
TEXTUREFLAGS_NOLOD = 0x00000200,
TEXTUREFLAGS_ALL_MIPS = 0x00000400,
TEXTUREFLAGS_PROCEDURAL = 0x00000800,
// These are automatically generated by vtex from the texture data.
TEXTUREFLAGS_ONEBITALPHA = 0x00001000,
TEXTUREFLAGS_EIGHTBITALPHA = 0x00002000,
// Newer flags from the *.txt config file
TEXTUREFLAGS_ENVMAP = 0x00004000,
TEXTUREFLAGS_RENDERTARGET = 0x00008000,
TEXTUREFLAGS_DEPTHRENDERTARGET = 0x00010000,
TEXTUREFLAGS_NODEBUGOVERRIDE = 0x00020000,
TEXTUREFLAGS_SINGLECOPY = 0x00040000,
TEXTUREFLAGS_PRE_SRGB = 0x00080000,
TEXTUREFLAGS_UNUSED_00100000 = 0x00100000,
TEXTUREFLAGS_UNUSED_00200000 = 0x00200000,
TEXTUREFLAGS_UNUSED_00400000 = 0x00400000,
TEXTUREFLAGS_NODEPTHBUFFER = 0x00800000,
TEXTUREFLAGS_UNUSED_01000000 = 0x01000000,
TEXTUREFLAGS_CLAMPU = 0x02000000,
TEXTUREFLAGS_VERTEXTEXTURE = 0x04000000,
TEXTUREFLAGS_SSBUMP = 0x08000000,
TEXTUREFLAGS_UNUSED_10000000 = 0x10000000,
TEXTUREFLAGS_BORDER = 0x20000000,
TEXTUREFLAGS_UNUSED_40000000 = 0x40000000,
TEXTUREFLAGS_UNUSED_80000000 = 0x80000000,
};
Заголовок формата
typedef struct tagVTFHEADER
{
char signature[4]; // File signature ("VTF\0"). (or as little-endian integer, 0x00465456)
unsigned int version[2]; // version[0].version[1] (currently 7.2).
unsigned int headerSize; // Size of the header struct (16 byte aligned; currently 80 bytes) + size of the resources dictionary (7.3+).
unsigned short width; // Width of the largest mipmap in pixels. Must be a power of 2.
unsigned short height; // Height of the largest mipmap in pixels. Must be a power of 2.
unsigned int flags; // VTF flags.
unsigned short frames; // Number of frames, if animated (1 for no animation).
unsigned short firstFrame; // First frame in animation (0 based).
unsigned char padding0[4]; // reflectivity padding (16 byte alignment).
float reflectivity[3]; // reflectivity vector.
unsigned char padding1[4]; // reflectivity padding (8 byte packing).
float bumpmapScale; // Bumpmap scale.
unsigned int highResImageFormat; // High resolution image format.
unsigned char mipmapCount; // Number of mipmaps.
unsigned int lowResImageFormat; // Low resolution image format (always DXT1).
unsigned char lowResImageWidth; // Low resolution image width.
unsigned char lowResImageHeight; // Low resolution image height.
// 7.2+
unsigned short depth; // Depth of the largest mipmap in pixels.
// Must be a power of 2. Can be 0 or 1 for a 2D texture (v7.2 only).
// 7.3+
unsigned char padding2[3]; // depth padding (4 byte alignment).
unsigned int numResources; // Number of resources this vtf has
} VTFHEADER;
VTF данные изображения в низком разрешении
Плотно упакованные данные изображения с низким разрешением в формате, описанном в заголовке. Данные изображения с низким разрешением всегда хранятся в формате сжатого изображения DXT1. Его размеры соответствуют размерам самого большого MIP-карты с шириной или высотой, не превышающей 16 пикселей. то есть для VTF 256x256 пикселей: 16x16, для VTF 256x64 пикселей: 16x4, для VTF 1x32 пикселей: 1x16, для VTF 4x4 пикселей: 4x4.
VTF данные изображения в высоком разрешении
Tхорошо упакованные перемежающиеся данные изображения высокого разрешения в формате, описанном в заголовке. Распространенные форматы изображений включают DXT1, DXT5, BGR888, BGRA8888 и UV88. Все размеры должны быть power of two.
История версий
v7.5
- Выпущено 19 июля 2010 г. как часть Alien Swarm
- Побитовый эквивалент v7.4.
- Переопределяет и изменяет два флага текстуры.
- Сферы теперь официально избыточны.
- Большинство изменений внутри процесса создания VTF с помощью VTEX, например Форматы MipMap fading, Alpha decay и XBox360.
v7.4
- Выпущена 10 октября 2007 г. как часть The Orange Box.
- Побитовый эквивалент версии 7.3.
- Решает проблемы, связанные с тем, как выполняется гамма-коррекция текстур для ТВ-вывода на XBOX 360 в сочетании с поиском памяти выгружаемого пула ОС.
v7.3
- Добавлена расширяемая структура, ориентированная на ресурсы.
- Добавлены ресурсы CRC, управления уровнем детализации текстуры и листа, а также ресурсы изображений с обратной совместимостью и изображений с низким разрешением.
- Добавлено несколько форматов трафаретов глубины, зависящих от поставщика (для внутреннего использования в движке), а также форматы карт нормалей и линейные несжатые форматы.
- Выпущена 18 сентября 2007 г. как часть Team Fortress 2 бета.
v7.2
- Добавлена поддержка объемных текстур.
- Выпущен 23 сентября 2005 г. как Steam обновление двигателя.
v7.1
- Добавлена поддержка карты сфер для карт среды. (Это было предназначено для поддержки DirectX 6, которая позже была сокращена.)
v7.0
- Изначальный выпуск. (Только для внутреннего выпуска, однако некоторые текстуры v7.0 попали в опубликованный заголовок.)
Реализация
Пример независимой от Steam реализации формата файла изображения VTF можно найти в библиотеке LGPL C / C ++. VTFLib .
Инструменты
- Просмотр
- Windows thumbnail handler (Windows XP+)
- VTF Explorer (Windows; можно исследовать внутри GCFs)
- gdk-pixbuf-vtf (Gnome\Nautilus\Eog)
- IrfanView plugin
- Программа просмотра изображений Leadworks (supports VTF) [мёртвая ссылка]
- Редактирование
- VTFEdit (GUI) и VTFCmd (command line )
- Photoshop Plug-in (6 и вверх)
- GIMP Plug-in
- Paint.NET Plug-in
- 3DSMax plugin (версии с 6 по 2009)
- VIDE
- Преобразование между версиями
- 7.5 to 7.4 Batch Converter