Ru/VTF (Valve Texture Format): Difference between revisions
m (Nesciuse moved page VTF (Valve Texture Format)/ru to Ru/VTF (Valve Texture Format) over redirect: Language prefixes) |
m (-Using L template for links) |
||
Line 4: | Line 4: | ||
{{toc-right}} | {{toc-right}} | ||
'''Valve Texture Format''' ('''VTF''') - это проприетарный формат | '''Valve Texture Format''' ('''VTF''') - это проприетарный формат {{L|texture|текстур}} использующийся движком {{source|4}}. VTF файлы обычно задействуются через {{L|Material|VMT}} файлы вместо использования напрямую, что предоставляет возможность их повторного использования. | ||
{{tip|Возможно, в некоторой степени, восстановить файлы VTF сжатые в формате DXT (т.е. убирая артифакты сжатия) | {{tip|Возможно, в некоторой степени, восстановить файлы VTF сжатые в формате DXT (т.е. убирая артифакты сжатия) {{L|Restoring_Texture_After_DXT_Compression|используя ИИ}}.}} | ||
== Ограничения и Нюансы == | == Ограничения и Нюансы == | ||
Line 13: | Line 13: | ||
{{note|Все block-compressed файлы VTF (как например те, которые используют DXT сжатие) должны обладать размерами, которые кратны четырём. Хотя размеры VTF файла обычно ограничены до [[Wikipedia:Powers of two#The first 96 powers of two|степени двойки]], некоторые сторонние инструменты могут импортировать и экспортировать текстуры выходящие за рамки этого ограничения. Если вы выбрали использовать текстуры не-двоичной-степени, ожидайте, что фильтрация текстуры сломается (это можно "исправить" установкой пометки "point sampling" на текстуре). | {{note|Все block-compressed файлы VTF (как например те, которые используют DXT сжатие) должны обладать размерами, которые кратны четырём. Хотя размеры VTF файла обычно ограничены до [[Wikipedia:Powers of two#The first 96 powers of two|степени двойки]], некоторые сторонние инструменты могут импортировать и экспортировать текстуры выходящие за рамки этого ограничения. Если вы выбрали использовать текстуры не-двоичной-степени, ожидайте, что фильтрация текстуры сломается (это можно "исправить" установкой пометки "point sampling" на текстуре). | ||
Также, non-power-of-two VTFs are not read correctly by {{hammer|4.1}} (and possibly in-game), being treated as the next largest power of two.}} | Также, non-power-of-two VTFs are not read correctly by {{hammer|4.1}} (and possibly in-game), being treated as the next largest power of two.}} | ||
{{modernConfusion|В отличии от форматов текстур, таких как | {{modernConfusion|В отличии от форматов текстур, таких как {{L|DDS}}, которые хранят mipmap'ы от большего к меньшему, файлы VTF хранят mipmap'ы от меньшего к большему.}} | ||
== Инструменты == | == Инструменты == | ||
{{stub|section=1}} | {{stub|section=1}} | ||
VTF файлы могут быть созданы из изображений в формате | VTF файлы могут быть созданы из изображений в формате {{L|TGA}} или {{L|PFM}} с помощью Source SDK Tool {{L|Vtex (Source 1)|Vtex}}. Следующие сторонние инструменты также могут быть использованы для создания, просмотра или редактирования файлов VTF. | ||
=== Просмотр === | === Просмотр === | ||
* | * {{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://forre.st/vtf gdk-pixbuf-vtf] (Gnome\Nautilus\Eog) | ||
* [https://www.irfanview.com/plugins.htm IrfanView plugin] | * [https://www.irfanview.com/plugins.htm IrfanView plugin] | ||
Line 27: | Line 27: | ||
=== Редактирование === | === Редактирование === | ||
* | * {{L|VTFEdit}} (GUI) and {{L|VTFCmd}} ({{L|command line|командная строка}}) | ||
* | * {{L|Photoshop VTF Plugin|Photoshop Plug-in}} (с 6 по CC 2018, только 32-битная версия) | ||
* [http://code.google.com/p/gimp-vtf/ GIMP Plug-in] | * [http://code.google.com/p/gimp-vtf/ GIMP Plug-in] | ||
* [http://nemesis.thewavelength.net/index.php?p=50 Paint.NET Plug-in] {{Dead_link}} – официальный вебсайт | * [http://nemesis.thewavelength.net/index.php?p=50 Paint.NET Plug-in] {{Dead_link}} – официальный вебсайт | ||
* [https://web.archive.org/web/20200201044118/http://nemesis.thewavelength.net:80/index.php?p=50 Paint.NET Plug-in] – архив на Wayback Machine | * [https://web.archive.org/web/20200201044118/http://nemesis.thewavelength.net:80/index.php?p=50 Paint.NET Plug-in] – архив на Wayback Machine | ||
* | * {{L|3DSMax VTF plugin|3DSMax plugin}} (версии с 6 по 2009 год) | ||
* | * {{L|VIDE}} | ||
=== Преобразование между версиями === | === Преобразование между версиями === | ||
* | * {{L|VTFVer}} (7.5 to 7.4) | ||
* {{no_vtf|3.1}} | * {{no_vtf|3.1}} | ||
* [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] | ||
Line 47: | Line 47: | ||
* Значение [[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 55: | Line 55: | ||
=== Таблица форматов данных изображений === | === Таблица форматов данных изображений === | ||
{| class="wikitable sortable" style="text-align:center;" | {| class="wikitable sortable" style="text-align:center;" | ||
! Формат || <span title="Красные биты">К</span> || <span title="Зелёные биты">З</span> || <span title="Синие биты">С</span> || <span title="Серые ("Intensity") биты">I</span> || <span title="Биты палитры"> | ! Формат || <span title="Красные биты">К</span> || <span title="Зелёные биты">З</span> || <span title="Синие биты">С</span> || <span title="Серые ("Intensity") биты">I</span> || <span title="Биты палитры">{{L|Palette|П}}</span> || <span title="Альфа биты">{{L|Alpha|А}}</span> || <span title="Всего битов">В</span> || <span title="Сжатие">Сжат</span> || <span title="Поддерживается">Под</span> || Комментарии | ||
|- | |- | ||
| A8 || 0 || 0 || 0 || N/A || N/A || 8 || 8 || Нет || Да || Без цвета (полностью чёрный), 8-битный альфа-канал | | A8 || 0 || 0 || 0 || N/A || N/A || 8 || 8 || Нет || Да || Без цвета (полностью чёрный), 8-битный альфа-канал | ||
Line 112: | Line 112: | ||
====Сжатие HDR==== | ====Сжатие HDR==== | ||
HDR текстуры могут храниться в сжатой форме используя любой формат с небинарным альфа-каналом (BGRA8888 is ''greatly preferred'' and is what is used by | HDR текстуры могут храниться в сжатой форме используя любой формат с небинарным альфа-каналом (BGRA8888 is ''greatly preferred'' and is what is used by {{L|Vtex (Source 1)|Vtex}}, but DXT5 or BGRA4444 also work). | ||
Эта формула показывает как преобразовать эти цвета в целочисленный HDR (integer): | Эта формула показывает как преобразовать эти цвета в целочисленный HDR (integer): | ||
Line 122: | Line 122: | ||
{{codeblock|1=RGB = (RGB * (A * 16)) / 262144}} | {{codeblock|1=RGB = (RGB * (A * 16)) / 262144}} | ||
{{L|Vtex (Source 1)|Vtex}} can convert 32 bits-per-channel {{w|Portable Floatmap|PFM}} files to this format, and {{no_vtf|3.1}} can convert compressed HDR VTFs to regular 16 bits-per-channel {{Wikipedia|OpenEXR|EXR}} files. | |||
{{note|Interpreting the data as HDR is done in the shader, and is currently only supported by the | {{note|Interpreting the data as HDR is done in the shader, and is currently only supported by the {{L|Sky (Source 1 shader)|Sky shader}}. The sky shader also has an alternate "HDR compression method B", which uses multiple textures (at different exposures?{{confirm}}) to create an HDR image.<br> | ||
HDR cubemaps are always stored as uncompressed RGBA16161616F, except in {{strata|4}}, where they can be stored as BC6H.}} | HDR cubemaps are always stored as uncompressed RGBA16161616F, except in {{strata|4}}, where they can be stored as BC6H.}} | ||
Line 136: | Line 136: | ||
* '''BGR565''' | * '''BGR565''' | ||
: 16 бит на пиксель. | : 16 бит на пиксель. | ||
: Используйте этот формат вместо BGR888, чтобы сохранить до 33% места, с зачастую несущественной потерей качества (особенно для | : Используйте этот формат вместо BGR888, чтобы сохранить до 33% места, с зачастую несущественной потерей качества (особенно для {{L|$basetexture|basetextures}}). | ||
: Рекомендуется для текстур низкого разрешения, где блочное сжатие DXT будет заметным (например, порты с GoldSrc). | : Рекомендуется для текстур низкого разрешения, где блочное сжатие DXT будет заметным (например, порты с GoldSrc). | ||
:: {{note|BGR888 may still be desired для текстур с качественным градиентом (such as LDR skyboxes или red glowing textures), as well as for improved accuracy for normal maps (BGR565 is incapable of properly representing a "flat" normal map). }} | :: {{note|BGR888 may still be desired для текстур с качественным градиентом (such as LDR skyboxes или red glowing textures), as well as for improved accuracy for normal maps (BGR565 is incapable of properly representing a "flat" normal map). }} | ||
Line 146: | Line 146: | ||
: 4 бит на пиксель. | : 4 бит на пиксель. | ||
: Используйте этот формат для обычных текстур без альфа-канала. | : Используйте этот формат для обычных текстур без альфа-канала. | ||
:: {{Note|DXT1 поддерживает 1 bit of alpha precision. '''Однако''', any areas of 0 alpha will be fully black. This functionality is therefore best used for textures using | :: {{Note|DXT1 поддерживает 1 bit of alpha precision. '''Однако''', any areas of 0 alpha will be fully black. This functionality is therefore best used for textures using {{L|$alphatest}} (although DXT5 can sometimes handle mipmaping of such textures more effectively, and should be used if using {{L|$allowalphatocoverage}}).}} | ||
* '''DXT3''' (также известен как BC2) | * '''DXT3''' (также известен как BC2) | ||
: 8 бит на пиксель. | : 8 бит на пиксель. | ||
: '' | : ''{{L|DirectX_Texture_compression_5|DXT5}} почти всегда должен быть использован вместо DXT3'', но DXT3 оптимален (не обязательно лучше) для текстур с альфа-каналом и резкими градиентами, such as if using {{L|$allowalphatocoverage}}; see [[:File:DXTn alpha comparison.png]].<br>DXT3 takes up the same file size as DXT5. | ||
: {{bug| | : {{bug|{{L|VRAD}} is unable to calculate texture shadows for textures using DXT3 compression.. Вместо этого используйте DXT5 или BGRA8888 для текстур, бросающих тень.}} | ||
* ''' | * '''{{L|DirectX_Texture_compression_5|DXT5}}''' (также известен как BC3) | ||
: 8 бит на пиксель. | : 8 бит на пиксель. | ||
: Используйте этот формат для обычных текстур с альфа-каналом. | : Используйте этот формат для обычных текстур с альфа-каналом. | ||
Line 162: | Line 162: | ||
* '''A8''' | * '''A8''' | ||
: 8 бит на пиксель. | : 8 бит на пиксель. | ||
: Используйте этот формат в связи с {{ent|$color}}, для одноцветных текстур с альфа-каналом, such as | : Используйте этот формат в связи с {{ent|$color}}, для одноцветных текстур с альфа-каналом, such as {{L|decals (GoldSrc)|GoldSrc-style decals}}. | ||
* '''RGBA16161616F''' | * '''RGBA16161616F''' | ||
: 64 бит на пиксель. | : 64 бит на пиксель. | ||
: Используйте этот формат для | : Используйте этот формат для {{L|HDR}} текстур. | ||
:: {{tip| | :: {{tip|{{L|HDR Skybox Creation|HDR небосводы}} также могут использовать сжатый формат используя BGRA8888, обычно обеспечивая приемлемое качество, при этом уменьшая размер файла наполовину. [[#HDR_compression|Сжатый формат]] рекомендуется для пользовательских небосводов, {{L|BSPZIP|упакованные}} в многопользовательских картах.}} | ||
* '''UV88''' | * '''UV88''' | ||
: 16 бит на пиксель. | : 16 бит на пиксель. | ||
: Используйте этот формат для | : Используйте этот формат для {{L|Du/dv_map|DuDv}} карт. | ||
Найти технические детали о различных форматах сжатия DXT [http://www.fsdeveloper.com/wiki/index.php?title=DXT_compression_explained здесь] и [http://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ здесь.] | Найти технические детали о различных форматах сжатия DXT [http://www.fsdeveloper.com/wiki/index.php?title=DXT_compression_explained здесь] и [http://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ здесь.] | ||
Line 184: | Line 184: | ||
* '''BC6H''' | * '''BC6H''' | ||
: 8 бит на пиксель. | : 8 бит на пиксель. | ||
: Используйте этот формат для | : Используйте этот формат для {{L|HDR}} текстур. It is a quarter the size of [[#HDR_compression|compressed HDR]] в видеопамяти, while being similar or better quality. | ||
{{note|All Source engine branches since the {{orangebox|4}} неофициально поддерживают ATI1N и ATI2N. Но несмотря на это, нет никакой гарантии, что они будут работать корректно; ATI1N is interpreted as red instead of greyscale, and the Z axis of ATI2 normal maps may not be correctly generated depending on the user's GPU if using vanilla shaders{{cn|there is code in the vanilla shaders specifically to handle ATI2N normal maps}}.}} | {{note|All Source engine branches since the {{orangebox|4}} неофициально поддерживают ATI1N и ATI2N. Но несмотря на это, нет никакой гарантии, что они будут работать корректно; ATI1N is interpreted as red instead of greyscale, and the Z axis of ATI2 normal maps may not be correctly generated depending on the user's GPU if using vanilla shaders{{cn|there is code in the vanilla shaders specifically to handle ATI2N normal maps}}.}} | ||
==Пометки изображений== | ==Пометки изображений== | ||
{{tip|Большинство настроек оттенения конфигурируются с помощью | {{tip|Большинство настроек оттенения конфигурируются с помощью {{LCategory|List of Shader Parameters|параметров материала}}, не с помощью текстурных пометок.}} | ||
VTF может содержать следующие пометки (версия 7.5): | VTF может содержать следующие пометки (версия 7.5): | ||
Line 196: | Line 196: | ||
| '''Пометка''' || '''Значение''' || '''Комментарий''' | | '''Пометка''' || '''Значение''' || '''Комментарий''' | ||
|- | |- | ||
| Point Sampling || 0x0001 || Отключает Билинейную фильтрацию ради фильтрации текстуры в стиле "пиксель-арт". {{note|Ломает mipmapping, смотреть | | Point Sampling || 0x0001 || Отключает Билинейную фильтрацию ради фильтрации текстуры в стиле "пиксель-арт". {{note|Ломает mipmapping, смотреть {{L|$pointsamplemagfilter}} если используется {{csgo|4|nt=1}} branch or derivatives.}} | ||
|- | |- | ||
| Trilinear Sampling || 0x0002 || Всегда использовать [[Wikipedia:Trilinear filtering|Трилинейную фильтрацию]], даже когда в настройках видео стоит Билинейная фильтрация. | | Trilinear Sampling || 0x0002 || Всегда использовать [[Wikipedia:Trilinear filtering|Трилинейную фильтрацию]], даже когда в настройках видео стоит Билинейная фильтрация. | ||
Line 206: | Line 206: | ||
| Anisotropic Sampling || 0x0010 || Всегда использовать [[Wikipedia:Trilinear filtering|Анизатропную фильтрацию]], даже когда в настройках видео стоит Билинейная или Трилинейная фильтрация. | | Anisotropic Sampling || 0x0010 || Всегда использовать [[Wikipedia:Trilinear filtering|Анизатропную фильтрацию]], даже когда в настройках видео стоит Билинейная или Трилинейная фильтрация. | ||
|- | |- | ||
| Hint DXT5 || 0x0020 || Используется в | | Hint DXT5 || 0x0020 || Используется в {{L|skybox|небосводах}}. Убедитесь, что края бесшовные.{{how}} | ||
|- | |- | ||
| PWL Corrected | | PWL Corrected | ||
Line 221: | Line 221: | ||
| No Level Of Detail || 0x0200 || Не зависит от настроек разрешения текстуры. | | No Level Of Detail || 0x0200 || Не зависит от настроек разрешения текстуры. | ||
|- | |- | ||
| No Minimum Mipmap || 0x0400 || Если установлено, загружает MIP-карты размером менее 32x32 пикселей. {{warning|Required on Env Maps for custom shaders, like PBR, to work correctly.}} {{tip|Use this on noisy | | No Minimum Mipmap || 0x0400 || Если установлено, загружает MIP-карты размером менее 32x32 пикселей. {{warning|Required on Env Maps for custom shaders, like PBR, to work correctly.}} {{tip|Use this on noisy {{L|diffuse}}/{{L|albedo}}, {{L|normal map}}, and {{L|$detail|detail}} textures to reduce aliasing when viewed at a distance.}} | ||
|- | |- | ||
| Procedural || 0x0800 || Текстура является процедурной текстурой (код может это изменять). | | Procedural || 0x0800 || Текстура является процедурной текстурой (код может это изменять). | ||
Line 251: | Line 251: | ||
| No Depth Buffer || 0x800000 || Не [https://ru.wikipedia.org/wiki/Z-%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F|Z-буферизация] для обработки видео обычно расстояние визуализации. | | No Depth Buffer || 0x800000 || Не [https://ru.wikipedia.org/wiki/Z-%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F|Z-буферизация] для обработки видео обычно расстояние визуализации. | ||
|- | |- | ||
| Nice Filtered || 0x1000000 || использование | | Nice Filtered || 0x1000000 || использование {{L|NICE filtering|NICE фильтрация}} для создания MIP-карт. (Для внутреннего использования VTEX?) | ||
|- | |- | ||
| Clamp U || 0x2000000 || Координаты зажима U (для объемных текстур). | | Clamp U || 0x2000000 || Координаты зажима U (для объемных текстур). | ||
Line 257: | Line 257: | ||
| Vertex Texture || 0x4000000 || Может использоваться как вершинная текстура | | Vertex Texture || 0x4000000 || Может использоваться как вершинная текстура | ||
|- | |- | ||
| SSBump ||0x8000000 || Текстура является | | SSBump ||0x8000000 || Текстура является {{L|$ssbump|SSBump}}. (''SSB'') | ||
|- | |- | ||
| Border ||0x20000000 || Привязка к цвету границы по всем координатам текстуры | | Border ||0x20000000 || Привязка к цвету границы по всем координатам текстуры | ||
Line 283: | Line 283: | ||
# Записи ресурсов | # Записи ресурсов | ||
#* VTF Данные изображения с низким разрешением | #* VTF Данные изображения с низким разрешением | ||
#* | #* {{L|Valve_Texture_Format|Другие данные о ресурсах}} | ||
#* Для каждого Mipmap (от наименьшего к наибольшему) | #* Для каждого Mipmap (от наименьшего к наибольшему) | ||
#** Для каждого кадра (от первого до последнего) | #** Для каждого кадра (от первого до последнего) | ||
Line 441: | Line 441: | ||
=== 7.5 === | === 7.5 === | ||
* Выпущено 19 июля 2010 г. как часть | * Выпущено 19 июля 2010 г. как часть {{L|Alien Swarm}} | ||
* Побитовый эквивалент v7.4. | * Побитовый эквивалент v7.4. | ||
* Переопределяет и изменяет два флага текстуры. | * Переопределяет и изменяет два флага текстуры. | ||
Line 462: | Line 462: | ||
=== 7.2 === | === 7.2 === | ||
* Добавлена поддержка объемных текстур. | * Добавлена поддержка объемных текстур. | ||
* Выпущен 23 сентября 2005 г. как | * Выпущен 23 сентября 2005 г. как {{L|Steam}} обновление движка и в поздних версиях {{src04|4}}. | ||
=== 7.1 === | === 7.1 === | ||
Line 471: | Line 471: | ||
=== Другие реализации === | === Другие реализации === | ||
Пример независимой от Steam реализации формата файла изображения VTF можно найти в библиотеке LGPL C / C ++. | Пример независимой от Steam реализации формата файла изображения VTF можно найти в библиотеке LGPL C / C ++. {{L|VTFLib}}. | ||
* [https://file.io/fqh8bhLzX1rD cl-valve-texture-format] — VTF reader and writer in Common Lisp. | * [https://file.io/fqh8bhLzX1rD cl-valve-texture-format] — VTF reader and writer in Common Lisp. | ||
==Смотреть также== | ==Смотреть также== | ||
* | * {{L|Creating a Material|Создание материала}} | ||
* | * {{L|Material|Материал}} | ||
* | * {{L|VMT}} | ||
* | * {{L|WAD}}, {{L|SPR}}, and {{L|BMP}}/{{L|TGA}} ({{gldsrc|4}} equivalents) | ||
* | * {{L|VTEX (Source 2)|VTEX}} ({{src2|4}} equivalent) |
Revision as of 09:35, 11 July 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 или PFM с помощью Source SDK Tool Vtex . Следующие сторонние инструменты также могут быть использованы для создания, просмотра или редактирования файлов VTF.
Просмотр
- Windows thumbnail handler (Windows XP+)
- VTF Explorer (Windows; можно исследовать внутри GCFs)
- gdk-pixbuf-vtf (Gnome\Nautilus\Eog)
- IrfanView plugin
- Программа просмотра изображений Leadworks [мёртвая ссылка] (поддерживает VTF)
Редактирование
- VTFEdit (GUI) and VTFCmd (командная строка )
- Photoshop Plug-in (с 6 по CC 2018, только 32-битная версия)
- GIMP Plug-in
- Paint.NET Plug-in [мёртвая ссылка] – официальный вебсайт
- Paint.NET Plug-in – архив на Wayback Machine
- 3DSMax plugin (версии с 6 по 2009 год)
- VIDE
Преобразование между версиями
- VTFVer (7.5 to 7.4)
- no_vtf
- 7.5 to 7.4 Batch Converter
- Easy VTF Version (7.0-7.5) Converter
- vtex2 (Supports v7.6)
Ресурсы
В 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) - теряют.
Таблица форматов данных изображений
Формат | К | З | С | I | П | А | В | Сжат | Под | Комментарии |
---|---|---|---|---|---|---|---|---|---|---|
A8 | 0 | 0 | 0 | N/A | N/A | 8 | 8 | Нет | Да | Без цвета (полностью чёрный), 8-битный альфа-канал |
ABGR8888 | 8 | 8 | 8 | N/A | N/A | 8 | 32 | Нет | Да | Несжатая текстура с 8-битным альфа-каналом |
ARGB8888 | 8 | 8 | 8 | N/A | N/A | 8 | 32 | Нет | Да | Несжатая текстура с 8-битным альфа-каналом, похожа на ABGR8888 |
BGR565 | 5 | 6 | 5 | N/A | N/A | 0 | 16 | Нет | Да | Несжатая непрозрачная текстура, ограниченная глубина цвета |
BGR888 | 8 | 8 | 8 | N/A | N/A | 0 | 24 | Нет | Да | Несжатая непрозрачная текстура, полная глубина цвета |
BGR888_BLUESCREEN | 8 | 8 | 8 | N/A | N/A | 0 | 24 | Нет | Да | То же самое, что и BGR888, но синие пиксели (цвет hex #0000ff) отрисовываются прозрачными |
BGRA4444 | 4 | 4 | 4 | N/A | N/A | 4 | 16 | Нет | Да | Несжатая текстура с альфа-каналом, половина глубины цвета |
BGRA5551 | 5 | 5 | 5 | N/A | N/A | 1 | 16 | Нет | Да | Несжатая текстура, ограниченная глубина цвета, 1-битный альфа-канал |
BGRA8888 | 8 | 8 | 8 | N/A | N/A | 8 | 32 | Either | Да | Сжатая HDR текстура без альфа-канала или несжатая SDR текстура с 8-битным альфа-каналом |
BGRX5551 | 5 | 5 | 5 | N/A | N/A | 1 | 16 | Нет | Да | |
BGRX8888 | 8 | 8 | 8 | N/A | N/A | 8 | 32 | Нет | Да | Как BGRA8888, но альфа-канал всегда установлен на 255, делая его функционально равноценным BGR888. |
DXT1 DXT1_ONEBITALPHA |
N/A | N/A | N/A | N/A | 4 | N/A | 4 | Да | Да | Стандартное сжатие, опциональный 1-битный альфа-канал (рекомендуется для непрозрачных). Формат DXT1_ONEBITALPHA не работает должным образом; вместо него используйте обычный DXT1 с пометкой о включённом 1-битном альфа-канале. |
DXT3 | N/A | N/A | N/A | N/A | 4 | 4 | 8 | Да | Да | Стандартное сжатие, неинтерполированный 4-битный альфа-канал |
DXT5 | N/A | N/A | N/A | N/A | 4+4 | N/A | 8 | Да | Да | Стандартное сжатие, интерполированный 8-битный альфа-канал (рекомендуется для прозрачных/полупрозрачных) |
I8 | N/A | N/A | N/A | 8 | N/A | N/A | 8 | Нет | Да | Яркость (Градация серого), нет альфа-канала |
IA88 | N/A | N/A | N/A | 8 | N/A | 8 | 16 | Нет | Да | Яркость (Градация серого), 8-битный альфа-канал |
P8 | N/A | N/A | N/A | N/A | 8 | N/A | 8 | Нет | Нет | 256-цветная палитра |
RGB565 | 5 | 6 | 5 | N/A | N/A | 0 | 16 | Нет | Да | Несжатая текстура, ограниченная глубина цвета, похожа на BGR565. Not properly supported in all branches; prefer BGR565 instead, which always works. |
RGB888 | 8 | 8 | 8 | N/A | N/A | 0 | 24 | Нет | Да | Несжатая непрозрачная текстура, похожа на BGR888. |
RGB888_BLUESCREEN | 8 | 8 | 8 | N/A | N/A | 0 | 24 | Нет | Да | То же самое, что и RGB888, но синие пиксели (цвет hex #0000ff) отрисовываются прозрачными. |
RGBA16161616 | 16 | 16 | 16 | N/A | N/A | 16 | 64 | Нет | Да | Целочисленный формат HDR (integer) |
RGBA16161616F | 16 | 16 | 16 | N/A | N/A | 16 | 64 | Нет | Да | Формат HDR с плавающей запятой (floating point) |
RGBA8888 | 8 | 8 | 8 | N/A | N/A | 8 | 32 | Нет | Да | Несжатая текстура с 8-битным альфа-каналом, похожа на ABGR8888 |
UV88 | 8 | 8 | N/A | N/A | N/A | N/A | 16 | Нет | Да | Несжатый формат du/dv |
UVLX8888 | N/A | N/A | N/A | N/A | N/A | N/A | 32 | Нет | Да | |
UVWQ8888 | N/A | N/A | N/A | N/A | N/A | N/A | 32 | Нет | Да |



Сжатие HDR
HDR текстуры могут храниться в сжатой форме используя любой формат с небинарным альфа-каналом (BGRA8888 is greatly preferred and is what is used by Vtex , but DXT5 or BGRA4444 also work).
Эта формула показывает как преобразовать эти цвета в целочисленный HDR (integer):
и в HDR с плавающей запятой (floating point):
Vtex can convert 32 bits-per-channel PFM files to this format, and no_vtf can convert compressed HDR VTFs to regular 16 bits-per-channel
EXR files.

HDR cubemaps are always stored as uncompressed RGBA16161616F, except in

Выбор формата изображений
Не смотря на то, что VTF предоставляет поддержку широкого ряда форматов изображений, есть только несколько форматов, которые вы, скорее всего, будете использовать. Эти форматы и критерии выбора описаны ниже:
- BGR888
- 24 бит на пиксель.
- Используйте для текстур без альфа-канала и с качественным градиентом (например, карт нормалей и световых ореолов (light halo)).
- BGR565
- 16 бит на пиксель.
- Используйте этот формат вместо BGR888, чтобы сохранить до 33% места, с зачастую несущественной потерей качества (особенно для basetextures ).
- Рекомендуется для текстур низкого разрешения, где блочное сжатие DXT будет заметным (например, порты с GoldSrc).
Примечание:BGR888 may still be desired для текстур с качественным градиентом (such as LDR skyboxes или red glowing textures), as well as for improved accuracy for normal maps (BGR565 is incapable of properly representing a "flat" normal map).
- BGRA8888
- 32 бит на пиксель.
- Используйте этот формат для текстур с альфа-каналом и с качественным градиентом (например, карт нормалей и световых ореолов). Он также может быть использован, чтобы получать высококачественные текстуры.
- Рекомендуется для текстур низкого разрешения, для которых блочное сжатие DXT будет заметным (например, порты с GoldSrc).
- DXT1 (также известен как BC1)
- 4 бит на пиксель.
- Используйте этот формат для обычных текстур без альфа-канала.
Примечание:DXT1 поддерживает 1 bit of alpha precision. Однако, any areas of 0 alpha will be fully black. This functionality is therefore best used for textures using $alphatest (although DXT5 can sometimes handle mipmaping of such textures more effectively, and should be used if using $allowalphatocoverage ).
- DXT3 (также известен как BC2)
- 8 бит на пиксель.
- DXT5 почти всегда должен быть использован вместо DXT3, но DXT3 оптимален (не обязательно лучше) для текстур с альфа-каналом и резкими градиентами, such as if using $allowalphatocoverage ; see File:DXTn alpha comparison.png.
DXT3 takes up the same file size as DXT5.
- DXT5 (также известен как BC3)
- 8 бит на пиксель.
- Используйте этот формат для обычных текстур с альфа-каналом.
- I8
- 8 бит на пиксель.
- Используйте этот формат для черно-белых текстур без альфа-канала и с качественным градиентом (например, световые ореолы).
- IA88
- 16 бит на пиксель.
- Используйте этот формат для черно-белых текстур с альфа каналом и качественным градиентом (например, дым или световые ореолы).
- A8
- 8 бит на пиксель.
- Используйте этот формат в связи с $color, для одноцветных текстур с альфа-каналом, such as GoldSrc-style decals .
- RGBA16161616F
- 64 бит на пиксель.
- Используйте этот формат для HDR текстур.
Совет:HDR небосводы также могут использовать сжатый формат используя BGRA8888, обычно обеспечивая приемлемое качество, при этом уменьшая размер файла наполовину. Сжатый формат рекомендуется для пользовательских небосводов, упакованные в многопользовательских картах.
- UV88
- 16 бит на пиксель.
- Используйте этот формат для DuDv карт.
Найти технические детали о различных форматах сжатия DXT здесь и здесь.
Дополнительные форматы в Strata Source
Strata Source поддерживает дополнительные форматы изображения в VTF v7.6, которые обеспечивают более лучшее сжатие, уменьшая требования к GPU VRAM и, в то же время, сохраняя более лучшее качество изображение, чем DXT1 или DXT5.
- BC7
- 8 бит на пиксель.
- Используйте этот формат вместо DXT5 для текстур с альфа-каналом, так как он использует такое же количество видеопамяти.
- Используйте этот формат вместо BGR888 или BGR565 когда нужно больше деталей, чем DXT1 может предоставить.
- ATI1N (также известен как BC4)
- 4 бит на пиксель.
- Используйте этот формат вместо I8 или DXT1 для чёрно-белых текстур. Использует то же количество видеопамяти, что и DXT1.
- BC6H
- 8 бит на пиксель.
- Используйте этот формат для HDR текстур. It is a quarter the size of compressed HDR в видеопамяти, while being similar or better quality.


Пометки изображений

VTF может содержать следующие пометки (версия 7.5):
Пометка | Значение | Комментарий |
Point Sampling | 0x0001 | Отключает Билинейную фильтрацию ради фильтрации текстуры в стиле "пиксель-арт". ![]() ![]() |
Trilinear Sampling | 0x0002 | Всегда использовать Трилинейную фильтрацию, даже когда в настройках видео стоит Билинейная фильтрация. |
Clamp S | 0x0004 | Координаты зажима S. Предотвращает горизонтальную обёртку текстуры. |
Clamp T | 0x0008 | Координаты зажима T. Предотвращает вертикальную обёртку текстуры. |
Anisotropic Sampling | 0x0010 | Всегда использовать Анизатропную фильтрацию, даже когда в настройках видео стоит Билинейная или Трилинейная фильтрация. |
Hint DXT5 | 0x0020 | Используется в небосводах . Убедитесь, что края бесшовные.[Как?] |
PWL Corrected | 0x0040 | Цель неизвестна. |
SRGB | Использует цветовое пространство sRGB. Полезно для высоких гамм. Устарело в версии 7.5. | |
No Compress | 0x0040 | Не использует сжатие DXT (внутренний для vtex) |
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 + |
---|---|
|
|
Перечисления
IMAGE_FORMAT
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
};
TEXTUREFLAGS
enum CompiledVtfFlags
{
// 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,
};
Заголовок VTF
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 Resource Entry
struct ResourceEntryInfo
{
unsigned char tag[3]; // A three-byte "tag" that identifies what this resource is.
unsigned char flags; // Resource entry flags. The only known flag is 0x2, which indicates that no data chunk corresponds to this resource.
unsigned int offset; // The offset of this resource's data in the file.
};
- Tags
{ '\x01', '\0', '\0' }
- Low-res (thumbnail) image data.{ '\x30', '\0', '\0' }
- High-res image data.{ '\x10', '\0', '\0' }
- Animated particle sheet data.{ 'C', 'R', 'C' }
- CRC data.{ 'L', 'O', 'D' }
- Texture LOD control information.{ 'T', 'S', 'O' }
- Game-defined "extended" VTF flags.{ 'K', 'V', 'D' }
- Arbitrary KeyValues data.
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.
История версий
7.6
Unofficial VTF version supported by Strata Source. Not compatible with any of Valve's games, or other mods.
- Adds support for deflate compression of image data, allowing for reduced storage size.
- Fixes support for ATI1N and ATI2N, and adds support for BC6H and BC7.
7.5
- Выпущено 19 июля 2010 г. как часть Alien Swarm
- Побитовый эквивалент v7.4.
- Переопределяет и изменяет два флага текстуры.
- Сферы теперь официально избыточны.
- Большинство изменений внутри процесса создания VTF с помощью VTEX, например Форматы MipMap fading, Alpha decay и XBox360.
7.4
- Несовместим с
Source 2006 и ранее.
- Выпущена 10 октября 2007 г. как часть The Orange Box.
- Побитовый эквивалент версии 7.3.
- Решает проблемы, связанные с тем, как выполняется гамма-коррекция текстур для ТВ-вывода на XBOX 360 в сочетании с поиском памяти выгружаемого пула ОС.
7.3
- Несовместим с
Source 2006 и ранее.
- Добавлена расширяемая структура, ориентированная на ресурсы.
- Добавлены ресурсы CRC, управления уровнем детализации текстуры и листа, а также ресурсы изображений с обратной совместимостью и изображений с низким разрешением.
- Добавлено несколько форматов трафаретов глубины, зависящих от поставщика (для внутреннего использования в движке), а также форматы карт нормалей и линейные несжатые форматы.
- Выпущена 18 сентября 2007 г. как часть
Team Fortress 2 бета.
7.2
- Добавлена поддержка объемных текстур.
- Выпущен 23 сентября 2005 г. как Steam обновление движка и в поздних версиях
Source 2004.
7.1
- Добавлена поддержка карты сфер для карт среды. (Предназначалась для поддержки DirectX 6, которая позже была вырезана.)
7.0
- Изначальный выпуск. (Только для внутреннего выпуска, однако некоторые текстуры v7.0 попали в опубликованный заголовок.)
Другие реализации
Пример независимой от Steam реализации формата файла изображения VTF можно найти в библиотеке LGPL C / C ++. VTFLib .
- cl-valve-texture-format — VTF reader and writer in Common Lisp.