Какой формат имеют файлы текстур
Модели в играх Source - будь то props, персонажи, viewmodels, и др. - требуют хотя бы 3 основных компонента: Ваш.MDL, Ваш.Material:ru и Ваш.VTF.
К сожалению не очень точно говорить, что MDL это "каркас", VTF это "обложка" и VMT это "физика". На каждом этапе, ваша модель будет содержать по крайней мере два отдельных, но всегда ссылающихся друг на друга файла. Каждый этап компиляции требует информацию из части другого файла. Поэтому процедура должна проходить по строгой последовательности, и имена файлов и их расположение всегда также строго определенное.
Процесс создания этих файлов умещается в два общих шага:
- Первый этап это создание основной текстуры и размещение её на вашей сетке, в результате получиться пара "временных" файлов: Ваш.SMD и Ваш.TGA.
- На втором этапе, используя Ваш.SMD и Ваш.TGA компилируется Ваш.MDL, Ваш.VMT и Ваш.VTF в определенной папке Source game_directory.
Предпросмотр
- Выводы о процессе текстурирования вашего персонажа могут быть сделаны непосредственно в движке Source, прежде чем идти дальше со своим материалом, экспортируйте его в .vtf, создайте .vmt, создайте .mdl и посмотреть на модель в игре. Работа над тонкостями и параметрами шейдеров может быть только после того, как вы увидите вашу модель в игре.
Временная текстура "checkerboard"("Шахматная доска")
- Использование текстуры шахматной доски хороший способ проверить ваши UV координаты; это позволит вам быстро увидеть наличие каких-либо искажений, полос или швов, которым требуется корректировка. Также, использование текстуры шахматной доски дает хороший способ измерить сколько элементов текстуры вам требуется на различных частях модели, поскольку вы определили UV координаты, некоторые элементы (таких как лицо) требуют немного больше плотности, но в целом вам следует стремиться к логичной плотности элементов текстуры на всей модели. Стандартный noicon.pic файл в XSI хороший выбор или вы можете использовать Checkerboard Starter Texture (клик ПКМ, сохранить как. ) входящий в SDK.
Какой должен быть размер текстуры?
- Экспортируйте .VTF как можно раньше и загрузите просмотр вашей модели в игре, используя команду консоли mat_showmiplevel, проверьте что mip-уровни, you’re seeing at some of the most common encounters your character is going to have during gameplay (не могу адекватно перевести эту фразу). Хотя может казаться, что чем больше, тем лучше, но это не всегда так, mipmapping может заставить ваши большие текстуры уменьшиться, пока размытость не станет проблемой.
Многослойные текстуры
- Вам следует стараться использовать только одну основную текстуру, если материалу не требуется другого. Многослойная текстура может существенно повлиять на время визуализации. Если вам необходимо создать многослойную текстуру для модели, вы должны для начала выбрать полигоны, сгруппировать их, а затем применить материал и изображение к группе. Убедитесь, что в параметрах установлено "reload externally modified images on focus". Это перезагрузит текстуру, когда вы вернетесь при помощи alt-tab в XSI из другой программы, например Photoshop, что спасет вам немного времени.
Любая Текстура, которая применена к модели (перед экспортом в Ваш.SMD из XSI) должна быть конвертирована из TGA в VTF файл, прежде чем это сможет использовать Source Engine. Имя VTF файла должно быть таким же как и у TGA файла, использованного в Вашем.SMD (например: Ваш.TGA -> Ваш.VTF) и VTF помещен в папку game_directory/materials/models .
- SourceSDK/bin содержит Vtex.exe, приложение, используемое для компиляции в .VTF. Простейший способ использовать Vtex - это создать ярлык для vtex.exe на своём рабочем столе, и перетаскивать .TGA файлы на него. Это создаст .VTF файл, который будет иметь такое же имя как и ваш .TGA файл в директории материалов. Когда вы перетащили tga файл в Vtex, создастся .TXT файл в тойже директории, где расположен .TGA файл. В этом файле вы можете написать команды для Vtex, которые изменят способ компресии.
Note: Для быстрого создания материалов, попробуйте добавить "-shader VertexLitGeneric" в свойствах ярлыка для Vtex, в поле пути к объекту. Это также работает с любыми другими типами шейдеров. Перенесение текстуры на этот модифицированный ярлык создаст как обычно .VTF файл и ещё .VMT файл с типом шейдера и основной текстурой определенными для вашей текстуры.
- Cannonfodder's StudioCompiler предоставит более дружелюбный интерфейс для Vtex (и Studiomdl). Это позволит компилировать/декомпилировать VTF, VMT и MDL файлы из/в TGA и SMD файлы.
Каждый Материал в Source engine определен .VMT файлом. Это специфическая модель освещения, основная текстура (VTF), и любая другая информация, которая вам может понадобиться: зеркальность, свечение, карты нормалей, прозрачность, полупрозрачность, и proxy shaders.
Для модели Ваш.VMT должен быть написан вручную (используя блокнот и т.п.) и размещен в папке game_directory/materials/models где Ваш.MDL сможет найти их. $basetexture (Ваш.VTF) ссылается на Ваш.VMT, должен также быть в той же папке game_directory/materials/models где Ваш.VMT сможет найти его.
Tip: QC команда $cdmaterials может использовать другие подпапки.
Warning: Все материалы должны использовать VertexLitGeneric шейдер. Материалы для модели не работают с LightmappedGeneric или UnlitGeneric.
Здесь пример VMT файла из HL2:
В этом примере материал использован для полигональной модели используя VertexLitGeneric шейдер. $basetexture или diffusemap определена в "Models/Combine_soldier/Combine_elite" $bumpmap или карта нормалей импортирована из "models/combine_soldier/combine_elite_normal". $envmap или environmentmap установлена на "env_cubemap" , что ссылает к cubemap entities размещенной на уровне; зеркальное отражение для этого персонажа всегда будет отражать мир вокруг - предполагается, что вы разместили cubemap entities на уровне. Вы можете использовать всместо этого другой cubemap, если хотите. На следующей линии, "$normalmapalphaenvmapmask" 1 сообщает визуализатору что в этом материале есть маска зеркальности, и только некоторые её части отразят информацию из env_cubemap, расположенная в данном случае в альфа канале карты нормалей. Карта зеркальности может быть и в альфа канале основной текстуры "$basealphaenvmapmask 1" или в файле маски зеркальности "$envmapmask" "models/modelname/mymask" . Команда "$envmapcontrast" 1 означает, что яркость отражений envmap умножается на себя один раз; для создания яркого освещения и глубоких теней. Все модели требуют наличие команды "$model" 1 , которая сообщает визуализатору, о том, что материал используется для полигональной модели скомпилированой Studiomdl.exe. Последняя линия "$selfillum" 1 сообщает визуализатору, что альфа канал $basetexture содержит информацию о самоизлучении, эти области альфа канала показывают светящиеся области модели.
Альфа-канал
Для создания материала с рабочим альфа-каналом вам необходимо ввести команду "$translucent" 1 в ваш VMT файл. Иногда это приводит к ошибке визуализации модели (например theres convex 1 in the back of convex 2, but convex 2 gets hidden by convex 1 => Rendering error). Если это случается, используется команда "$alphatest" 1 вместо "$translucent" 1 , которая исправляет это.
Proxy shaders
Мощный компонент системы материалов в Source engine это Proxy shader system. Пример на что способны proxy shaders покажет карта shaderzoo входящая в sdk. Дальнейшая информация о их создании вы сможете найти в соответствующих разделах документации.
Кто нибудь может мне подсказать какой формат текстур используется в игрхах чеще всего?
какой самый лучший по качеству?
какой оптимальный?
Лично я чаще всего встречал TGA
А восновном делают свои.
papean
По качеству, самый лучший, BMP, но он же самый грамоздкий. Чаще всего это TGA или PCX, или как уже сказал Ainar, делают свои.
интересно, почему не jpeg..
Polosati
Потому что, если в JPEG делать хорошее качество, то файл получается весьма веским, а если, наоборот, уменьшать размер, то искажение может быть огромным, и для текстуры такая картинка уже не сгодится.
jpeg с качеством 60-80 на глаз почти не заметно, а размер меньше намного.
почему именно TGA а не Tiff
Polosati
> jpeg с качеством 60-80 на глаз почти не заметно
Для текстур слово "почти" не уместно. Мылятся даже изначально качественные тектуры. А JPEG вовсе убого выглядит. К томуже в JPEG нет стандартной поддержки alpha-канала и приходится извращаться (например использовать ещё один JPEG).
Почему BMP или TGA?
Потому, что эти форматы самые простые и загрузка текстур из них является самой шустрой.
Так или иначе, почти всегда свой формат лучше, т.к. он учитывает ваши требования к текстурам (alpha-канал, сжатие и т.д.).
В последнее время я вижу только .DDS (к примеру Far Cry, Painkiller и т.д. )
Polosati
tiff трудоемко читать, его несколько видов бывает, половина с разными видами компрессии.
PNG по качеству практически как BMP? а весит прилично меньше.
Но вы правы, в последнее время везде только .dds, да и возможностей у него продвинутых куда больше..
1) загрузка простая. 2) поддержка DXT текстур.
>По качеству, самый лучший, BMP
Эт почему?? Есть куча форматов, в которых можно хранить картинку без всяких потерь и с поддержкой дополнительных данных (таблицы цветокоррекции, специфицированный альфа канал, тубнайлы и т.д. и т.п.). По моему основное преимущество BMP - он непосредственно виндой поддерживается, в остальном он вялый.
Мне кажется, надо просто оценить, какие фичи нужны и насколько качественную реализацию какого ридера можно найти/написать. Если нужен широкоизвестный простой формат с небольшим по размеру кодом чтения, я бы сначала смотрел в сторону PNG, TGA и опционально TGA+zlib.
DDS хорош, возможно для текстур лучший из общеиспользуемых, но есть недостаток: подготовка таких изображений требует специальных тулзов. Для разработчиков - не проблема, а вот если надо запрашивать у пользователя картинки в таком формате - не хорошо.
Использую TGA - очень простой формат без потери качества с поддержкой альфаканала. Недостаток - большой объем, но вопрос компрессии можно решить на стадии подготовки релиза.
имхо самый удобный - тот который сам написал - RAW.
так как ты затачиваешь его под свои нужды.
а про сжатие - дак пакуйте всю дату в архив - и всё будет ОК.
А чем тебе не нравится такой вариант - 256 цветов, у каждой текстуры своя палитра :) Весьма экономично.. Если альфа не нужна. Только мипы не очень хорошо будут выглядеть.
Darth
А как разница? На OpenGL они тоже очень элегантно используются.
Идеальный вариант dds. + tga, там где критично качество.
GREEN.POINT
. + tga, там где критично качество.
а за каким tga? чем tga качественнее некомпрессированного dds?
st0ke
да вроде ещё нет. mocia спосил, я ответил что удобнее
NE_Mashinist
А что, сейчас кого-то интерисует размер игры на жестком диске? :) - думаю на это можно забить. т.е. пофигу. :))
А вот скорость загрузки, другое дело. Как форматы можно распределить по скорости загрузки? Кто лидер?
И качество конечно нужно хорошее. :)
Вопрос: в ОГЛ скорость рендеринга будет одинаковая, какой бы формат текстур я не выбрал?
mocia
>А вот скорость загрузки, другое дело. Как форматы можно распределить по
>скорости загрузки? Кто лидер?
>Вопрос: в ОГЛ скорость рендеринга будет одинаковая, какой бы формат текстур я
>не выбрал?
Не обижайся, но с такими вопросами тебе игру писать рано. Текстуры в видеопамяти хранятся и видюхе както поровну в каком формате ты хранишь текстуры на диске.
raw быстрей всех грузиться, потом наверно tga и bmp идёт, dds скорей всего последним.
Executor
>> Текстуры в видеопамяти хранятся и видюхе както поровну в каком формате ты хранишь текстуры на диске.
Если только это не сжатые текстуры (S3TC, FXT1), эти и в памяти адаптера хранятся в сжатом виде, при необходимости часть текстурных данных распаковывается и выполняется текстурирование - теоретически, за счет затрат на распаковку, текстурирование может занимать больше времени.
По скорости загрузки DDS будет быстрее. Особенно если в нём уже содержутся Мип Мапы.
Хотя, если честно, то этот вопрос какой формат будет грузиться быстрее просто бред. Если посмотреть на пропускную способность IDE винта - 25 Мбайт/сек. И скорость обработки процессором и видеокартой данных, то тут же и ответ - скорость лимитируется пропускной способностью винта.
А на диске нужно хранить как тебе удобнее. Хочется мало места - тогда jpg. Хочется качество, тогда любой другой.
glProger
>Если только это не сжатые текстуры (S3TC, FXT1), эти и в памяти адаптера
>хранятся в сжатом виде, при необходимости часть текстурных данных
>распаковывается и выполняется текстурирование - теоретически, за счет затрат на
>распаковку, текстурирование может занимать больше времени.
Но какое это отношение имеет к формату файла на диске? Ты хоть в mp3 картинку храни, хоть в HTML, видюхе вообще побарабану, главное чтобы ты ей отдал картинку в правильном виде.
Кто нибудь может мне подсказать какой формат текстур используется в игрхах чеще всего?
какой самый лучший по качеству?
какой оптимальный?
Лично я чаще всего встречал TGA
А восновном делают свои.
papean
По качеству, самый лучший, BMP, но он же самый грамоздкий. Чаще всего это TGA или PCX, или как уже сказал Ainar, делают свои.
интересно, почему не jpeg..
Polosati
Потому что, если в JPEG делать хорошее качество, то файл получается весьма веским, а если, наоборот, уменьшать размер, то искажение может быть огромным, и для текстуры такая картинка уже не сгодится.
jpeg с качеством 60-80 на глаз почти не заметно, а размер меньше намного.
почему именно TGA а не Tiff
Polosati
> jpeg с качеством 60-80 на глаз почти не заметно
Для текстур слово "почти" не уместно. Мылятся даже изначально качественные тектуры. А JPEG вовсе убого выглядит. К томуже в JPEG нет стандартной поддержки alpha-канала и приходится извращаться (например использовать ещё один JPEG).
Почему BMP или TGA?
Потому, что эти форматы самые простые и загрузка текстур из них является самой шустрой.
Так или иначе, почти всегда свой формат лучше, т.к. он учитывает ваши требования к текстурам (alpha-канал, сжатие и т.д.).
В последнее время я вижу только .DDS (к примеру Far Cry, Painkiller и т.д. )
Polosati
tiff трудоемко читать, его несколько видов бывает, половина с разными видами компрессии.
PNG по качеству практически как BMP? а весит прилично меньше.
Но вы правы, в последнее время везде только .dds, да и возможностей у него продвинутых куда больше..
1) загрузка простая. 2) поддержка DXT текстур.
>По качеству, самый лучший, BMP
Эт почему?? Есть куча форматов, в которых можно хранить картинку без всяких потерь и с поддержкой дополнительных данных (таблицы цветокоррекции, специфицированный альфа канал, тубнайлы и т.д. и т.п.). По моему основное преимущество BMP - он непосредственно виндой поддерживается, в остальном он вялый.
Мне кажется, надо просто оценить, какие фичи нужны и насколько качественную реализацию какого ридера можно найти/написать. Если нужен широкоизвестный простой формат с небольшим по размеру кодом чтения, я бы сначала смотрел в сторону PNG, TGA и опционально TGA+zlib.
DDS хорош, возможно для текстур лучший из общеиспользуемых, но есть недостаток: подготовка таких изображений требует специальных тулзов. Для разработчиков - не проблема, а вот если надо запрашивать у пользователя картинки в таком формате - не хорошо.
Использую TGA - очень простой формат без потери качества с поддержкой альфаканала. Недостаток - большой объем, но вопрос компрессии можно решить на стадии подготовки релиза.
имхо самый удобный - тот который сам написал - RAW.
так как ты затачиваешь его под свои нужды.
а про сжатие - дак пакуйте всю дату в архив - и всё будет ОК.
Также, убедитесь в том что статья пытается соответствовать статье об альтернативных языках.
Contents
Valve Texture Format (VTF) - это проприетарный формат текстур использующийся движком Source. VTF файлы обычно задействуются через VMT файлы вместо использования напрямую, что предоставляет возможность их повторного использования.
VTF файлы могут быть созданы из изображений в формате TGA с помощью Source SDK Tool VTEX или из большинства основных форматов изображений с помощью сторонних инструментов. И текстуры и материалы хранятся в подпапках game_dir/materials/ .
Примечание: VTF файлы должны быть в размерности степени двойки, например: 64x64, 128x128, 256x256, 512x512 и т.д.
Примечание: Хотя технически это ограничение можно обойти с помощью альтернативных программ для конвертации текстур, например SprayMaker 5000
Возможности
Формат 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 (2 11 ) 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.
Форматы данных изображения
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 карт.
Флаги изображений
Совет: Большинство настроек шейдера конфигурируются с помощью параметров материала, не с помощью текстурных флагов.
VTF может содержать следующие флаги (версия 7.5):
Флаг | Значение | Комментарий |
Point Sampling | 0x0001 | Низкое качество, фильтрация текстур "пиксельная графика". |
Trilinear Sampling | 0x0002 | Фильтрация текстур среднего качества. |
Clamp S | 0x0004 | Координаты зажима S. |
Clamp T | 0x0008 | Координаты зажима T. |
Anisotropic Sampling | 0x0010 | Качественная фильтрация текстур. |
Hint DXT5 | 0x0020 | Используется в skyboxes. Убедитесь, что края бесшовные. |
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.
Структура формата
- VTF заголовок
- VTF Данные изображения с низким разрешением
- Для каждого Mipmap (от наименьшего к наибольшему)
- Для каждого кадра (от первого до последнего)
- Для каждого лица (от первого до последнего)
- Для каждого Z-среза (от минимального до максимального; зависит от Mipmap)
- VTF Данные изображения высокого разрешения
- Для каждого Z-среза (от минимального до максимального; зависит от Mipmap)
- Для каждого лица (от первого до последнего)
- Для каждого кадра (от первого до последнего)
- VTF заголовок
- Записи ресурсов
- VTF Данные изображения с низким разрешением
- Для каждого Mipmap (от наименьшего к наибольшему)
- Для каждого кадра (от первого до последнего)
- Для каждого лица (от первого до последнего)
- Для каждого Z-среза (от минимального до максимального; зависит от Mipmap)
- VTF Данные изображения высокого разрешения
- Для каждого Z-среза (от минимального до максимального; зависит от Mipmap)
- Для каждого лица (от первого до последнего)
- Для каждого кадра (от первого до последнего)
Перечисления
Заголовок формата
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.
История версий
- Выпущено 19 июля 2010 г. как часть Alien Swarm
- Побитовый эквивалент v7.4.
- Переопределяет и изменяет два флага текстуры.
- Сферы теперь официально избыточны.
- Большинство изменений внутри процесса создания VTF с помощью VTEX, например Форматы MipMap fading, Alpha decay и XBox360.
- Выпущена 10 октября 2007 г. как часть The Orange Box.
- Побитовый эквивалент версии 7.3.
- Решает проблемы, связанные с тем, как выполняется гамма-коррекция текстур для ТВ-вывода на XBOX 360 в сочетании с поиском памяти выгружаемого пула ОС.
- Добавлена расширяемая структура, ориентированная на ресурсы.
- Добавлены ресурсы CRC, управления уровнем детализации текстуры и листа, а также ресурсы изображений с обратной совместимостью и изображений с низким разрешением.
- Добавлено несколько форматов трафаретов глубины, зависящих от поставщика (для внутреннего использования в движке), а также форматы карт нормалей и линейные несжатые форматы.
- Выпущена 18 сентября 2007 г. как часть Team Fortress 2 бета.
- Добавлена поддержка объемных текстур.
- Выпущен 23 сентября 2005 г. как Steam обновление двигателя.
- Добавлена поддержка карты сфер для карт среды. (Это было предназначено для поддержки DirectX 6, которая позже была сокращена.)
- Изначальный выпуск. (Только для внутреннего выпуска, однако некоторые текстуры v7.0 попали в опубликованный заголовок.)
Реализация
Пример независимой от Steam реализации формата файла изображения VTF можно найти в библиотеке LGPL C / C ++. VTFLib.
Читайте также: