Source Filmmaker Guide

Шейдеры Source Engine / Прописываем материалы for Source Filmmaker

Шейдеры Source Engine / Прописываем материалы

Overview

Попробую описать основные шейдеры Source Engine и как прописать материал с их использованием.

📜 Введение.

В Source Engine все материалы прописываются в файле в формате *.vmt. (Valve Material Type)

Это обычный текстовый файл, который можно редактировать хоть в блокноте, но я посоветую использовать более продвинутые программы, например Notepad++

Для Notepad++ есть фанатский файл, добавляющий подсветку синтаксиса для VDF языка (qc / vmt / vta / vdf / fgd / vbsp и др.)
Скачать / установить – [link]

Основными шейдерами считаются LightmappedGeneric (для брашевой геометрии) и VertexLitGeneric (для моделей).

Для начала я рассмотрю модельные шейдеры т.к. тутор пишется с расчётом на пользователей Source Filmmaker, а там практически везде модели.

✏️ Основные параметры

● $basetexture – основная текстура, параметр, который указывается практически во всех шейдерах. Это путь до *.VTF файла. Как создать VTF текстуру можно узнать в моём гайде
[link]

● $bumpmap – здесь указывается текстура bump map или ssbump.
– Bump map используется для создания видимого рельефа, засчёт такой текстуры освещение частично затеняется и появляется видимость объёмных элементов.
– SSbump практически аналогичная bump map, но даёт более явный визуальный эффект. Для подключения такой текстуры требуется написать в vmt ещё одну строчку $ssbump 1
– Внимание: ssbump не поддерживается этим шейдером. Работает только на брашевых шейдерах LightmappedGeneric / WorldTwoTextureBlend / WorldVertexTransition

SSbump текстура создаётся при помощи программы SSbump Generator[sourceforge.net] из текстуры BumpMap / Normal map.

Пример самого базового материала, можно обойтись и без bump текстуры, но для очень полигональных моделей. Для остальных рекомендуется создавать хоть какую-то нормаль.

“VertexLitGeneric” { “$baseTexture” “modelstest” “$bumpmap” “modelstest_nrm” }

При использовании фонга или envmap нормаль обязательна, т.к. эти эффекты строятся на их основе и альфа канале.

Пути указываются основываясь на “корневой папке” игры. Т.е. все D-Games-Steam и прочую чушь не надо указывать. Например берём для примера путь

d:GamesSteamSteamAppsCommonHalf-Life 2hl2materialsmodelsalyx

От этого пути, останется только. Т.е. даже materials по умолчанию движок уже знает.

modelsalyx

📌 Модельные шейдеры

Ниже перечислены самые часто используемые шейдеры, пригодные для моделей и иногда для брашевой геометрии.

✅ VertexLitGeneric

VertexLitGeneric – основной модельный шейдер. Пример vmt

“VertexLitGeneric” { “$baseTexture” “modelstest” “$bumpmap” “modelstest_nrm” “$envmap” “env_cubemap” “$normalmapalphaenvmapmask” “1” “$envmaptint” “[.25 .25 .25]” “$phong” “1” “$phongboost” “5” “$phongexponent” “25” “$phongfresnelranges” “[.7 .9 1]” }

Поддерживаемые эффекты:
$bumpmap – рельефное текстурирование
$detail – добавление детайла
$envmap – отражения
$flesh – эффект мяса
$halflambert – освещение
$phong – фонг
$translucent – прозрачность
$alpha – прозрачность
$emissiveblend – для эффекта вортигонтов из ep1/2

● $envmap – здесь указывается текстура (или стандарт). По умолчанию здесь прописывается стандарт env_cubemap, модель берёт отражения с самой карты, которые были пробилдены и вшиты в карту.
Так-же здесь можно указать путь до собственной текстуры. Текстура эта не простая, она состоит из 6 текстур, которые представляют из себя куб. Подробнее о создании текстуры читайте по ссылке выше ($envmap)

● $envmaptint – задаем силу отражения для всех трех цветов (RGB).
$envmaptint” “[.25 .25 .25]”. Подойдёт для эффекта лака, металика, мокрой кожи и.т.п.

● $normalmapalphaenvmapmask – использовать альфа канал bump map / ssbump в качестве specular. С помощью такого канала можно добавить разную силу отражения на разных участках текстуры. Где на альфе будет цвет ближе к чёрному, там эффект отражения будет максимальный, где ближе к белому – наоборот.
Например можно использовать для придания блеска только молнии на одежде, а остальное блестеть не должно. Параметр может быть 0 – не использовать или 1 – использовать.

● $phong – включение фонг эффекта. Представляет из себя что-то вроде эффекта лака поверх текстуры. Более выгодный вариант для “типа” отражений или блеска. Не требует пробилденных кубемапов на карте.

● $phongboost – усиление эффекта фонга, является десятичным числом. Например $phongboost “4.3”.

● $phongtint – аналогично параметру $envmaptint.

● $phongexponent – фонг экспонент. Чем ниже значение, тем эффект становится более мутным, если выше, то эффект становится больше похожим на envmap.

● $phongfresnelranges – освещает только те фейсы которые повернуты к игроку. Указывается в формате [φX φY φZ] от 0 до 1.

● $halflambert – дополнительный “окружающий” эффект освещения. Имеет значения 0 и 1 (выкл/вкл).

● $flesh – (текстуры) эффект плоти / мышц на персонаже. Этот эффект использовался всего один раз в hl2 ep2 когда вортигонты лечили alyx в шахте. Этот параметр что-то вроде прокси, используется вместе с point_flesh_effect_target энтией в hammer editor (маппинг).
В игре к рукам вортигонта крепится эта энтия и в зоне где она движется, текстура меняется на другую с изображением внутренностей. Пример VMT параметров по ссылке $flash выше.

✅ Refract

Refract – шейдер, имитирующий стекло с искажением окружения, которое находится за текстурой (как правило). Может использоваться на брашевой геометрии и на моделях. Для использования на модели используйте дополнительно параметр $model 1

Шейдер довольно таки “жрущий” и лагучий вместе с другими зеркальными поверхностями, например зеркало или вода.

“Refract” { “$model” 1 “$refractamount” “.065” “$bluramount” “1” “$REFRACTTINT” “{214 225 193}” “$scale” “[1 1]” “$dudvmap” “Models/props_c17/frostedglass_01a_normal” “$normalmap” “Models/props_c17/frostedglass_01a_normal” “$nocull” 1 “$surfaceprop” “glass” “$envmap” “env_cubemap” “$envmapcontrast” “1” “$envmapsaturation” “[1 1 1]” “$envmaptint” “[.3 .3 .3]” }

● $refractamount – сила искажений отражений.
● $refracttint – аналог $envmaptint
● $bluramount – настройка блюра
● $scale – честно говоря без понятия что это. Как не менял эффекта нету.
● $dudvmap” – устаревший парметр для DX8 и ниже (в SFM/AS/Portal2/CSGO и других более новых играх используется только DX9+)

Этот шейдер умеет использовать параметр $normalmap2, это я вычитал на каком-то забытом форуме. Что-то вроде UnlitTwoTexture. В таком случае $normalmap используется как маска, а
$normalmap2 как основная “текстура” которая перекрывается альфа каналом $normalmap
Да понимаю, это сложно в понимании но мне помогло реализовать очень инетесный эффект волны.

Остальные параметры я описывал выше.

✅ UnlitGeneric

UnlitGeneric – шейдер для отражения текстуры как фуллбрайтовой, т. е. текстура не реагирует на источники освещения. Всегда светится. Её свечение можно уменьшить используя костыль $color2 но это убивает прозрачность.

“UnlitGeneric” { “$translucent” 1 “$vertexcolor” 1 “$vertexalpha” 1 “$decal” 1 “$basetexture” “decals/plasmaglowalpha” “$decalscale” 2.00 “$decalfadeduration” 2.00 “$decalfadetime” 0.00 “$color” “{211 34 42}” }

Поддерживаемые эффекты:
$translucent – прозрачность
$alpha – прозрачность
$detail – добавление детайла
$outline – использование обводки, что-то вроде внешнего свечения в фотошопе.

Шейдер очень примитивный, используется как на брашевой геометрии так и на моделях. Для модели нужен параметр $model 1.
Такая текстура всегда полностью освещена, не реагирует на освещение, фонарик и.т.п.

● $outline – обводка, возможно используется только в текстурах HUD_а. Не пользовался. См. ссылку на страницу в Dev Wiki выше.

● $detail – см. VertexLitGeneric
● $alpha – см. VertexLitGeneric
● $translucent – см. VertexLitGeneric

✅ UnlitTwoTexture

UnlitTwoTexture – шейдер аналогичный UnlitGeneric но имеет 2ю текстуру кроме базовой.
Основная текстура становится маской, 2я текстура работает как basetexture. Если приписать в прокси движение 2й текстуры, то можно получить эффект например облаков или энергополе комбаинов (в примере). Маска работает как обычно, чёрный это полная прозрачность, белый это полная НЕ прозрачность.

На данный момент в большинстве игр этот шейдер сломан и не может полноценно выполнять свою работу. Для решения проблемы можно использовать бубен и место UnlitTwoTexture использовать устаревший аналог UnlitTwoTexture_DX6.

“UnlitTwoTexture” { “$basetexture” “effects/combinedisplay001a” “$surfaceprop” “glass” “$texture2” “models/props_combine/combinescanline” “$selfillum” “1” “$mod2x” “1” “Proxies” { “TextureScroll” { “texturescrollvar” “$texture2transform” “texturescrollrate” 1 “texturescrollangle” -90 } } }

Поддерживаемые эффекты:
$translucent – прозрачность
$alpha – прозрачность
$detail – добавление детайла
$outline – использование обводки, что-то вроде внешнего свечения в фотошопе.

Шейдер очень примитивный, используется как на брашевой геометрии так и на моделях. Для модели нужен параметр $model 1.
Такая текстура всегда полностью освещена, не реагирует на освещение, фонарик и.т.п.

● $outline – обводка, возможно используется только в текстурах HUD_а. Не пользовался. См. ссылку на страницу в Dev Wiki выше.

● $detail – см. VertexLitGeneric
● $alpha – см. VertexLitGeneric
● $translucent – см. VertexLitGeneric

✅ EyeRefract

EyeRefract – шейдер используемый только для глаз персонажей. Шейдер не поддерживает свечение. Это новый и современный шейдер, который начали использовать в играх вроде Left 4 Dead 2.

Шейдер генерирует виртуальный шар (глаз), на котором скролится текстурка с зрачком. Так-же часть строения глаза прописывается в QC, при компиляции модели.

Старый шейдер назывался “Eyeball” он выглядел очень убого и совершенно не был похож на глаз.
Новый же шейдер любой модели моментально придаёт живости, т.к. имеет эффект настоящего глаза, с отражением, смоченной поверхностью и.т.п.

Рассмотрим VMT от глаза Ника из Left 4 Dead 2.

“EyeRefract” { “$Iris” “models/survivors/gambler/gambler_eyes” “$AmbientOcclTexture” “models/survivors/gambler/gambler_eye_ao” “$Envmap” “Engine/eye-reflection-cubemap-” “$CorneaTexture” “Engine/eye-cornea” “$EyeballRadius” “0.5” “$AmbientOcclColor” “[.4 .3 .27]” “$Dilation” “.6” “$ParallaxStrength” “0.25” “$CorneaBumpStrength” “.5” “$halflambert” “1” “$nodecal” “1” “$ambientocclusion” “1” “$RaytraceSphere” “1” “$SphereTexkillCombo” “0” }

● $Iris – основная текстура глаза.
● $AmbientOcclTexture – текстура AO
● $Envmap – текстура кастомного отражения, как я описывал в vertexlitgeneric. По умолчанию (и желательно) использовать стандартную текстуру “Engine/eye-reflection-cubemap-” да да, именно так со всеми тире.
● $CorneaTexture – что-то вроде normal map для объёма роговицы. Рекомендую использовать по умолчанию “Engine/eye-cornea”

● $EyeballRadius – радиус виртуального глаза (шара)
● $Dilation – размер зрачка
● $ParallaxStrength – сила эффекта Parallax, похоже на эффект шейдера Refract
● $CorneaBumpStrength – сила эффекта объёма роговицы. ($CorneaTexture)
● $RaytraceSphere + $SphereTexkillCombo – доп. обработка (0 или 1)

Текстура глаза должна обязательно иметь альфа канал, максимальная НЕ прозрачность должна быть там, где находится зрачок и роговица, дальше с эффектом градиента к краям до полной прозрачности.

1. сама текстура глаза
2. альфа канал текстуры (не путать с прозрачностью)
3. как выглядит текстура с включённой альфой.

Советую использовать все стандартные параметры, размеры самого глаза и ещё некоторые параметры настраиваются в QC модели.

📌 Брашевые шейдеры

Ниже перечислены самые часто используемые шейдеры, пригодные только для брашевой геометрии.

✅ LightmappedGeneric

LightmappedGeneric – основноый брашевый шейдер. Используется ТОЛЬКО на брашевой геометрии, т.е. такие текстуры используются на картах в Hammer Editor.

Главный и пожалуй единственный основной шейдер, с помощью которого отображаются все текстуры на брашах. Будь это displacement или обычная стена.

Поддерживаемые эффекты:
$bumpmap – рельефное текстурирование
$detail – добавление детайла
$envmap – отражения
$phong – фонг (только в CS:GO).
$translucent – прозрачность
$alpha – прозрачность
$decal – режим декали
$seamless_scale – фикс растяжения текстуры на displacement. (так в вики написано, сам не пробовал)

Пример стандартной текстуры

“LightmappedGeneric” { “$basetexture” “Plaster/plasterwall005c” “$bumpmap” “plaster/plasterwall005c_normal” “$surfaceprop” “plaster” “$envmap” “env_cubemap” “$normalmapalphaenvmapmask” 1 “$envmapcontrast” 1 “$envmapsaturation” 1 “$envmaptint” “[ .25 .25 .25 ]” “%keywords” “c17downtown” }

● $surfaceprop – физические свойства текстуры. Будет ли это например дерево или металл. Меняется как звук шагов так и декали от повреждений.
Весь список свойств можно найти тут – [link]

● $decal – использование текстуры в роли декали или оверлея. Технически этот параметр не больно и нужен.

Остальные параметры я описывал ранее. Они схожи с шейдером VertexLitGeneric

✅ WorldVertexTransition

WorldVertexTransition – шейдер, использующийся для displacement (можно для обычных брашей). Может создавать смешивание 2х текстур, это используется для рисования например дорожек или плавного перехода с одной текстуры на другую.


Пример VMT

“WorldVertexTransition” { “%tooltexture” “nature/blendsandweed005a_tooltexture” “%detailtype” “canal_reeds” “%keywords” “canal” “$surfaceprop” “sand” “$surfaceprop2” “dirt” “$basetexture” “nature/sandfloor010a” “$basetexture2” “nature/seaweed002a” “$bumpmap” “nature/sandfloor010a_normal” “$bumpmap2” “nature/seaweed002a_normal” }

● %detailtype – тип травы который будет на расти на displacement поверхностях. Эти данные записаны в detail.vbsp файле, который находится в корне игры.
● $basetexture2 – 2я основная текстура
● $bumpmap2 – bump для 2й текстуры.
● $surfaceprop2 – физические свойства 2й текстуры. Если не указано, то используется $surfaceprop от 1й текстуры.

✅ Water

Water – шейдер для создания воды. Используется ТОЛЬКО на брашах (не для моделей и не для displacement). Пример VMT

“Water” { “$abovewater” 1 “%compilewater” 1 “$forceexpensive” 1 “$reflectentities” 0 “$envmap” “env_cubemap” “%tooltexture” “dev/water_normal” “$refracttexture” “_rt_WaterRefraction” “$refractamount” “.7” “$reflectamount” “0.5” “$reflecttexture” “_rt_WaterReflection” “$scale” “[1 1]” “$bumpmap” “dev/water_dudv” “$normalmap” “dev/water_normal” “$surfaceprop” “water” “$bottommaterial” “nature/water_canals03_beneath” “$bumpframe” “0” “$fogenable” 1 “$fogcolor” “{18 14 12}” “$fogstart” “0” “$fogend” “330” “Proxies” { “AnimatedTexture” { “animatedtexturevar” “$normalmap” “animatedtextureframenumvar” “$bumpframe” “animatedtextureframerate” 30.00 } “TextureScroll” { “texturescrollvar” “$bumptransform” “texturescrollrate” .05 “texturescrollangle” 45.00 } } }

● $abovewater – нужна ли текстура “подводного пространства”.
● %compilewater – компилировать текстуру (браш с ней) как воду.
● $forceexpensive – насильное включение “красивой” воды.
● $forceexpensive – насильное включение отражение “всего”.
● $refracttexture – текстура отражений. Реалтайм отражения получаются с помощью стандартной “текстуры” _rt_WaterRefraction
● $refractamount – сила преломления.
● $scale – что-то аналогичное параметру из шейдера Refract
● $normalmap – карта нормалей (для воды чаще всего анимированная)
● $bottommaterial – текстура, которая будет показываться на весь экран игроку, когда он погружается под воду. Требует параметра $abovewater.
● $bumpframe – кадр, с которого начинает проигрываться анимация du/dv и bump карты.
● $fogenable – включение тумана в воде.
● $fogcolor – цвет тумана в RGB.
● $fogstart – на каком расстоянии появляется туман.
● $fogend – на каком расстоянии туман начинает быть полностью не прозрачным.

📌 Разное

Далее перечислю некоторые шейдеры и параметры не относящиеся к основным категориям.

✅ Sprite

Sprite – шейдер для спрайтов (ваш кэп).
Позволяет создать текстурку для использования в энтии env_sprite (маппинг).

Пример VMT

“Sprite” { “$spriteorientation” “vp_parallel” “$spriteorigin” “[ 0.50 0.50 ]” “$basetexture” “sprites/blueflare1” “$additive” “1” }

● $spriteorientation – что-то связанное с ориентацией спрайта в пространсте… вроде всегда смотрит на игрока или типа того. Сорян, никакой разницы не замечал от разных вариантов. (facing_upright / vp_parallel / vp_parallel_oriented)

● $spriteorigin – своебразный “центр” спрайта, полезно для создания спрайта например огня, где центр должен быть почти внизу.

● $spriteorigin – своебразный “центр” спрайта, полезно для создания спрайта например огня, где центр должен быть почти внизу.

● $additive – парметр, позволяющий полностью игнорировать чёрный цвет на текстуре, превращая его в прозрачность. Так-же может использоваться в других шейдерах.

✅ Patch

Patch – очень интересный… шейдер (?) если точнее выразиться это просто параметр для перенаправления на другой VMT с возможностью добавления или замены некоторых параметров. Можно сказать что это просто “ссылка”.
Данный “шейдер” применим во всех случаях, будь это модель или браш.

Например в контенте left4dead2_movies есть VMT – gambler_body_it.vmt
Вот его содержимое:

“patch” { “include” “materials/models/survivors/survivors_it_shared.vmt” “insert” { “$baseTexture” “modelssurvivorsgamblergambler_body” “$bumpmap” “modelssurvivorsgamblergambler_body_normal” “$phong” “1” “$phongboost” “0” “$phongexponent” “5” “$phongtint” “[.85 .85 1]” “$halflambert” “0” “$phongfresnelranges” “[.3 .65 30]” “$ambientocclusion” “1” “$diffuseexp” “1.5” } }

Рассмотрим данный VMT подробнее. У нас есть первая строка с “include”. Эта строчка перенаправляет нас на другой VMT, обратите внимание, что пишется полный путь к этому файлу, т.е. корень_игры/materials/models/…. (например hl2/materials/models/…

Дальше следует параметр “insert” всё, что находится дальше в фигурных скобках будет добавляться или заменяться в оригинальном коде и на выходе мы получим новый код составленных из 2х VMT… Разумеется оригинальный VMT из которого берутся изначальные парметры не будет изменён физически.

Внимание: менять можно ТОЛЬКО параметры шейдера из оригинального VMT, сам шейдер вы поменять не сможете. Для этого нужно писать новый файл с нуля, с указанием нужного шейдера.

Как смог описал…

💢 Различные параметры

Тут я перечислю параметры, которые используются практически во всех шейдерах.
Где и какие из них применимы смотрите в “поддерживаемые эффекты” и примере VMT файла.

● // – строка, начинающаяся с дух слешей считается комментарием. Игнорируется движком.
● %tooltexture – текстура, которая будет отображаться в браузере текстур в Hammer Editor.
● %keywords – тэг(и), для поиска текстуры в Hammer Editor
● %compilewater – компиляция в роли воды.
● $selfillum – включить / выключить эффект свечения текстуры. 0 или 1.
Если у текстуры нету альфа канала, то она будет светится вся полностью. Альфа канал позволяет светиться только части текстуры. Где белый там яркость максимальная, где чёрный там свечения не будет.
● $selfillumtint – яркость свечения / подкраска свечения. Можно использовать десятичные числа, например “[0.5 6.1 3.5]”.
Так-же можно использовать RGB значения, только используйте фигурные скобки.
Например “{128 255 60}”
● $color – подкраска текстуры цветом в RGB
● $color2 – аналогично $color
● $surfaceprop – используется только в “брашевых” шейдерах.
● $alpha и $translucent – 2 типа прозрачности текстур. Подробности см. в моём руководстве.
[link]
● $detail – добавление фейковой детализации или слоя свечения на основе другой текстуры. Смотри моё руководство.
[link]
● $selfillum – включить / выключить эффект свечения текстуры. 0 или 1.
Если у текстуры нету альфа канала, то она будет светится вся полностью. Альфа канал позволяет светиться только части текстуры. Где белый там яркость максимальная, где чёрный там свечения не будет
● $additive – парметр, позволяющий полностью игнорировать чёрный цвет на текстуре, превращая его в прозрачность. Так-же может использоваться в других шейдерах.
● $selfillumtint – $selfillumtint” “[1 1 1]” яркость свечения / подкраска свечения. Можно использовать десятичные числа, например “[0.5 6.1 3.5]”.
Так-же можно использовать RGB значения, только используйте фигурные скобки.
Например “{128 255 60}”
● $nodecal – запретить появление декалей на этой текстуре, например от выстрела.
● $model – (0/1) Включить режим шейдера для работы на модели, а не на брашевой геометрии. Применимо не ко всем шейдерам.
● $no_draw – заставляет текстуру стать полностью невидимой. (0/1)
● $ignorez – игнорировать всё, текстура будет как бы светиться сквозь все стены, препятствия и.т.д. Применимо очень мало где. Т.к. появляются артефакты. Используется в HUD.

💡 Некоторые прокси

Прокси, это дополнительные “скрипты” которые позволяют добавлять интересные эффекты, движение, анимацию, мигание и прочее.
Пример VMT кода.

“VertexLitGeneric” { “$baseTexture” “modelstest” “$bumpmap” “modelstest_nrm” “Proxies” { “AnimatedTexture” { “animatedTextureVar” “$basetexture” “animatedTextureFrameNumVar” “$frame” “animatedTextureFrameRate” “25” } “TextureScroll” { “texturescrollvar” “$baseTextureTransform” “texturescrollrate” 0.0 “texturescrollangle” 0 “texturescale” 5.0 } } }

Скроллинг определённой текстуры.

Заставляет двигаться любую текстуру под определённым углом и с определённой скоростью.

“TextureScroll” { “texturescrollvar” “$bumptransform” “texturescrollrate” .05 “texturescrollangle” 45.00 “texturescale” 1.0 }

● texturescrollvar – текстура для скроллинга
● texturescrollrate – скорость движения текстуры
● texturescrollangle – угол, под которым текстура будет двигаться
● texturescale – недокументированный параметр, работает не всегда. Параметр позволяет сделать “повтор” текстуры несколько раз. Не знаю как это называется по русски, по английски tiletable. 1.0 обычная текстура, 2.0 повторяется 2 раза и.т.д.

Анимированная текстура

Заставляет текстуру проигрывать подряд все свои кадры + фреймрейт. Чем больше фреймрейт, тем быстрее (или медленнее) скорость переключения кадров (как fps игры).
Для этого параметра, в текстуре должно быть хотя-бы 2 кадра и более.

“AnimatedTexture” { “animatedtexturevar” “$normalmap” “animatedtextureframenumvar” “$bumpframe” “animatedtextureframerate” 30.00 }

● animatedtexturevar – текстура, которая будет анимирована.
● animatedtextureframenumvar – параметр, который будет изменяться.
● animatedtextureframerate – частота кадров.

Переключение кадров текстуры

Частичный аналог AnimatedTexture. Помогает переключать текстуру на определённый кадр с помощью энтити (и не только) на карте (маппинг).

“ToggleTexture” { “toggleTextureVar” “$baseTexture” “toggleTextureFrameNumVar” “$frame” }

● toggleTextureVar – текстура используемая для переключения
● toggleTextureFrameNumVar – параметр, изменяемый у текстуры.

Синусоида

“Плавающая” переменная, можно создать что-то вроде быстрого мигания, или плавного наростания свечения… даже можно управлять значением альфа.

“Sine” { “resultVar” “$alpha” “sineperiod” .1 “sinemin” .98 “sinemax” 1 }

● resultVar – параметр, который будет изменяться
● sineperiod – время, за которое “синусоида” пройдёт от минимального значения до максимального.
● sinemin – минимальное значение синусоиды
● sinemax – максимальное значение синусоиды

Есть ещё куча различных прокси, которые я никогда не использовал. Полный список прокси можно найти здесь – [link]
Так-же на сайте nodraw.net есть отличный туториал по некоторым прокси материалам + карта пример. – [link]
P.S. – в самом низу есть незаметная ссылка на скачивание VMF + примеры (materials can be downloaded here)

Базовая трансформация текстуры

“$basetexturetransform” “center 1.016 0.984 scale 4.0 4.0 rotate 0 translate 0 0”
● center – смещение центра текстуры
● scale – масштабирование текстуры (повторение) 1 – обычный размер, 2 – повторить два раза и.т.д. Минусовые значения наоборот растягивают текстуру.
● rotate – повернуть текстуру на указанный угол, относительно центра.
● translate – смещение текстуры по осям X и Y
ВНИМАНИЕ – такие параметры крайне не рекомендуется использовать для текстур которые, будут использоваться в Hammer Editor, вы получите их неадекватное отображение.

Примеры использования

Начнём с основ. Вот результат работы параметра $bumpmap
Слева на модели только $basetexture, а справа $basetexture+$bumpmap
Параметр $phong 1
Слева на модели $basetexture+$bumpmap Справа $phong
Параметр $phongexponent
Визуально эффект в зависимости этого параметра может сильно отличаться в вашем случае, так-же от альфа канала текстур.

Параметр $rimlight Добавление “подсветки” модели сзади. Можно заметить на трубках у шеи.
Параметр $lightwarptexture Кастомный переход от света до тени.

● P.S.

Предлагаем контент, другие шейдеры, свойства… Я один и мог многое забыть и не написать.

SteamSolo.com