Ну делаешь модель, назначаешь разным частям текстуры, а потом устанавлиаешь свойства каждой текстуры в соответствующем vmt-файле и всё...
Важно знать какие эти самые свойства бывают
(я всех не знаю, описываю примерно)
Например взять SMG из ХЛ2
в папке материалов лежат 3 vmt и 4 vtf файла
texture4.vmt, v_smg1_sheet.vmt, texture5.vmt
v_smg1_sheet.vtf, smg1_normal.vtf, noise.vtf, texture5.vtf
texture4.vmt
code:"VertexLitGeneric"
{
// Original shader: VertexLitTexture
"$basetexture" "models/Weapons/V_smg2/TEXTURE4"
}
Ну эт кажисть обыкновенная текстура (если не ошибаюсь - магазина), лежит в соседней папке, зачем так сделано незнаю...
v_smg1_sheet.vmt
code:"VertexLitGeneric"
"VertexLitGeneric"
{
"$baseTexture" "Models/Weapons/V_smg1/v_smg1_sheet"
"$envmap" "env_cubemap"
//"$envmaptint" "[ 0.6 0.6 0.6 ]"
"$bumpmap" "models/weapons/v_smg1/smg1_normal"
"$envmapsaturation" .5
"$envmapcontrast" 1
"$normalmapalphaenvmapmask" 1
}
Ну это сам SMG, используется текстура v_smg1_sheet.vtf, плюс smg1_normal.vtf для бампа (далее видимо идут описания свойств отображения бампа)
texture5.vmt
code:"Unlittwotexture"
{
// Original shader: VertexLitTexture
"$basetexture" "models/Weapons/V_smg1/TEXTURE5"
"$texture2" "models/Weapons/V_smg1/noise"
"$additive" 1
"$model" 1
//"$envmap" "env_cubemap"
//"$envmaptint" "[ 0.6 0.6 0.6 ]"
"Proxies"
{
"TextureScroll"
{
"texturescrollvar" "$texture2transform"
"texturescrollrate" 4
"texturescrollangle" -50
}
}
}
А это вот прицел, ну красненькое перекрестье такое, в игре оно как бы дрожит, компьютерная подсветка или типа того, понятно короче =)... Эт судя по всему обеспечивается "смешиванием" двух текстур - TEXTURE5.vtf и noise.vtf. Параметр additive насколько я знаю дает прозрачность, а вот после строки TextureScroll и идет описание этого самого смешивания ( или раз scroll-смещение - значит смещение одной относительно другой)...
Короче, очень круто можно все сделать в ХЛ2! =)
Посмотрите какая гадость текстура к пистолю, а выглядит он вполне ничего, движок молодец =)