VMT (Valve Material) — представляет собой текстовый файл со скриптом, описывающий свойства материала.
Например:
«LightmappedGeneric»
{
«$basetexture» «shadertest/LightmappedTexture»
«$envmap» «shadertest/LightmappedTexture_envmap»
«$color» «[1 0 0]»
«$alpha» 0.5
«$nocull» 1
}
Скрипт в VMT cодержит секции заключенные в фигурные скобки { } с указанием перед ними имени в кавычках ««:
«Имя_секции» {
… содержимое
}
Внутри секции могут содержаться параметры в отдельных строках или другие вложенные секции.
Каждый параметр имеет имя начинающееся с символа доллара $ и заключенное в кавычки и значение, разделенные пробелом
«$Имя_параметра» значение

значение может быть разных типов:
строка — записывается в кавычках — «строка»
целое число — записывается без кавычек — 1
вещественное число — записывается без кавычек — 0.3 или .3
массив — записывается в квадратных скобках в кавычках, обычно состоит из 3 чисел —«[1 0.5 0]»
Также существуют параметры с именами начинающеся символом процета % - такие параметры являются служебными — для использования в утилитах SDK.

Самая главная секция в VMT описывает тип шейдера применяемый для рендеринга материала. Выбирается из списка доступных шейдеров.

Внутри секции шейдера размещаются различные параметры которые описывают свойства материала — имена файлов текстурных карт, цвет, прозрачность, блеск, отражение и т.д.
В вложенных секциях описывают прокси материала — позволяющие динамически изменять свойства материала (цвет, прозрачность, и т.д.) во время игры в зависимости от ситуации и скриптовых схем.

Шейдеры использующиеся в VMT

Тип шейдера Описание Параметры
alienscale
basetimeslightmaptimesdetail
basetimeslightmapwet
basetimesmod2xenvmap
bloom
blurfilterx
blurfiltery
cable
camo
cloud
debugbumpedlightmap
debugbumpedvertexlit
debugfbtexture
debuglightingonly
debuglightmap
debugluxels
debugmodifyvertex
debugnormalmap
debugunlit
debugvertexlit
decalBaseTimesLightmapAlphaBlendSelfillum
decalmodulate
downsample
eyeball
eyes Используется для реалистичных поверхностей глаз моделей.
fillrate
gooinglass
internalframesync
jellyfish
jojirium
lightmappedgeneric Наиболее часто используемые текстуры. Базовая текстура заданная параметром basetexture умножается картой света (lightmap) при визуализации компилятором карт.

Требуется только строка $basetexture

lightmappedtwotexture Две базовые текстуры смешанные равномерно и умноженные картой света (lightmap). Важно для материалов где одна или обе базовые тексутры находятся в движении.
modeladditivetransEnvMapwithMaskedTexture
modulate
overlay_fit
particlesphere
predator
reflecttexture
refract Преломление света позади материала в соответвтии с dudvmap и bumpmap. Корректно работает только для моделей.
shadow
shadowbuild
shadowmodel
showdestalpha
skyfog
sprite
teeth
translucentlightmap
unlitgeneric Самая базовая текстура. basetexture получает полное освещение.
unlittwotexture Две базовые текстуры смешанные равномерно и получают получают полное освещение.
vertexlitgeneric Базовая текстура с вертексным освещением
vertexnormals
volumetricfog
water
watersurfacebottom
wireframe
worldtwotextureblend Используется для поверхностей смещений (дисплейсмент). Две базовые текстуры используют вертексное овсещение. Процентное значение смешивания кажой из двух текстур, определяется значением alpha в редакторе свойств тектуры в Hammer.
worldvertexalpha Используется для поверхностей смещений (дисплейсмент). Базовая текстура с вертексным освещением.
worldvertextransition
writeZ
yuv

Параметры для шейдеров

Базовые параметры
«$basetexture» «путь/к/текстуре» — базовая текстура
«$surfaceprop» «тип поверхности» — устанавливает физический тип поверхности
«$bumpmap» «путь/к/normal-карте» — определяет векторы нормалей предназначенные для освещений и envmap искажений
«$parallaxmap» «путь/к/height-карте» — карта высот
«$parallaxmapscale» дробь — умножитель высот

Отражения
«$envmap» «env_cubemap» — использование ближайшего env_cubemap для отражений
«$envmaptint» «[float float float]» — устанавливает цветовые компоненты красный, зеленый, синий для envmap
«$normalmapalphaenvmapmask» 1 — (использовать карту нормалей для отражений???)

Освещение/рендеринг
«$selfillum» 1 — использовать альфа канал карты $basetexture для установки минимального фиксированного значения освещенности.
«$nocull» 1 — (не отбраковывать???)
«$alpha» дробь — устанавливает прозрачность
«$color» «[дробь дробь дробь]» - устанавливает цветовые компоненты красный, зеленый, синий
«$additive» 1 — аддитивный рендер текстуры (ее цвета добавляются, вместо замены, того что находится за ней.)

Другие
«$decal» 1 — использовать в декалях
«$decalscale» дробь
«$model» 1 — использовать для моделей

Свойства поверхности материала ($surfaceprop)

БЕТОН, КАМНИ
baserock
boulder
brick
concrete
concrete_block
gravel
rock

ЖИДКОСТЬ, ТЕКУЧЕСТЬ
slime
water
wade

МЕТАЛЛЫ
chain
chainlink
metal
metalbox
metalgrate
metalpanel
metalvent
slipperymetal
solidmetal

РАЗНОЕ
computer
default
glass
ladder

ОРГАНИКА
alienflesh
bloodyflesh
flesh
watermelon

СНЕГ, ЛЕД
ice
snow

ЗЕМЛЯ
antlionsand
quicksand
dirt
mud
slipperyslime
grass
tile
gravel

ДРЕВЕСИНА
wood
woodbox
woodcrate
wood_furniture
wood_lowdensity
wood_plank
wood_panel
wood_solid

Служебные параметры

%tooltexture
%keywords
%detailtype
%compileWater
%compileHint
15 июля 2005, 12:12