Полный список параметров материалов

Материал из Наша Wiki - Наша энциклопедия Half-Life
Перейти к: навигация, поиск

Описание материалов, программы для конвертирования

Текстура *.vtf - это файл изображения, который мы рисуем в графическом редакторе, в том же фотошопе.

Материал *.vmt - текстовый файл описывающий свойства текстуры: отражения, блеск и т.д. К нему будет ссылаться движок игры и эдитор, ведь они читают не текстуры (*.vtf), а материалы (*.vmt)..

Для редактирования текстуры в фотошопе нам понадобиться плагин, скачать вы его можете здесь (http://nemesis.thewavelength.net/index.php?c=154 )

Так же есть неплохая программа VTFEdit скачать ее можно здесь ( http://nemesis.thewavelength.net/index.php?c=178 ).

В этой программе есть возможность создания базового *.vmt

Материал, формат "*.vmt", открывается стандартным блокнотом, но мы вам рекомеднуем Notepad++, скачать вы можете его тут ( http://notepad-plus-plus.org/download/v5.9.3.html).

Перед экспортом текстуры нужно убедиться что значения разрешений текстуры являются степенью двойки, т. е. 8, 16, 32, 64, 128, 256, 512, 1024, 2048 и максимальное 4096. Экспортируем текстуру с фотошопа: File>save As, в графе "Format" выбираем *.vtf. Сохраняем в папку вашего мода: "mymod\materials", если текстура для модели, то экспортируем в папку "mymod\materials\models".


Создание материала

Создаем текстовый файл с расширением *.vmt в папке "mymod\materials" (или аналогично для модели в "mymod\materials\models") для текстуры.

Пример простейшего материала для моделей:

"VertexLitGeneric"
{
	"$basetexture" "models\mytexture"
	"$surfaceprop" "metal"
}

Пример простейшего материала для брашей:

"LightmappedGeneric"
{
	"$basetexture" "mytexture"
	"$surfaceprop" "metal"
}


"LightmappedGeneric"- вид шейдера <(Шейдер- это программа для определения окончательных параметров объекта или изображения. Она может включать в себя описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и т. д.) материала. Если мы делаем материал для модели то пишем вместо "LightmappedGeneric" VertexLitGeneric.


Описание шейдеров

Aftershock -этот шейдер работает с анимированными и скроллинговыми картами преломления.

Refract -искажает позади стоящие объекты (преломление) Пример. http://developer.valvesoftware.com/w/images/7/77/Refract.jpg

VertexLitGeneric -главный шейдер используемый на моделях.

VortWarp -шейдер используемый для придания эффекта вордигонтам в сцене EP1.

SpriteCard -шейдер взаимодействующий с системой партиклов.

WorldTwoTextureBlend -используется на дисплейсментах для рендера двух альбедо на одном материале.

WorldVertexTransition -используется на дисплейсментах для рендера двух текстур, которыми можно рисовать\микшировать. Пример http://developer.valvesoftware.com/w/images/9/9c/Blendmodulate.jpg

LightmappedGeneric -главный шейдер брашей и дисплейсментов.

UnlitGeneric -шейдер для отражения текстуры как фуллбрайтовой, т. е. текстура не реагирует на источники освещения. (Если используется на моделях- требуется параметр $model 1 , ибо на старых версиях двига текстура будет прозрачной).

UnlitTwoTexture -смесь шейдера UnlitGeneric и WorldVertexTransition. Можно рисовать\микшировать двумя текстурами не реагирующими на свет.

Patch -специальный шейдер, который позволяет материалам наследовать друг от друга.


Описание параметров шейдеров

Основные:

"$surfaceprop" "metal" - устанавливаем тип материала. Полный список материалов http://developer.valvesoftware.com/wiki/Material_surface_properties

Свойства поверхности материала ($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


Детейлы

"$detail" "details\mytexture_detail_01" - рельефная текстура накладываемая на основную текстуру n-раз для предания особой микрорельефности. [Подробнее>> ] http://enc.nashalife.ru/index.php?title=Дeтaльныe_тeкcтypы_(detail_textures)

• "$detailtexturetransform" "center .5 .5 scale 1 1 rotate 0 translate 0 0" - трансформация накладываемой текстуры.

• "$detailscale" "5" - количество повторений детальной текстуры на основной текстуре.

• "$detailblendfactor" "1"- управление прозрачностью детальной текстуры.

• "$detailblendmode" "0" - тип смешивания детальной текстуры с основной:

   0 = Нормальный (темный)
   1 = additive (светлый)
   2 = альфа детальной текстуры рисуется над главной
   3 = перекрестный

• "$detailtint" "[1 1 1]" - управление цветом детальной текстуры.

• "$detailframe" "1" - с какого кадра начинать проигрывать детайловую текстуру. Требует DX9.

• "$detail_alpha_mask_base_texture" "1" - только для шейдера WorldVertexTransition. Заставляет уровень альфы детайловой текстуры определять "основное смешивание структуры".

Регулировка текстуры

Трансформирование:

"$basetexturetransform" "center .5 .5 scale 1 1 rotate 0 translate 0 0"- изменение размера, положение, поворот главной текстуры.

• "$basetextureoffset" "1.0"- преобразование текстуры.

• "$basetexturescale" "1.0"- скейл поворот главной текстуры.

Аналогичные для 2-й текстуры в материале:

• "$basetexture2"

• "$basetexturetransform2"

• "$basetextureoffset2"

• "$basetexturescale2"

Цвет:

"$color" - изменение цвета текстуры на указанное. Управление каналами текстуры (включение\отключение каналов RGB). Есть 2 способа указать:

"$color" "[1 1 1]" - значения от 0.0 до 1.0

"$color" "{255 255 255}" - значения от 0 до 255

Настройка на текстуре дисплейсментах:

"$seamless_scale" "0.005" - параметр исправляющий проблемы растяжения текстуры на поверхностях дисплейсмента.


Другие:


"$writeZ" "1" - настройка переменной z в буфере глубины.

"$ignorez" "1" - исправляет баг Z-файтинга. Устанавливает какой материал должен быть впереди.

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

PS. Для CSS не работает правильно. Нужно использовать шейдер "screenspace_general". Пример:

"screenspace_general"

{

"$basetexture" "textures/tex"

"$ignorez" 1


"$linearread_basetexture" "1"

"$X360APPCHOOSER" "1"

"$PIXSHADER" "appchooser360movie_ps20b"

"$nolod" "1"

}


Прозрачность:

"$additive" 1 - параметр, который превращает темный цвет в прозрачность.

"$alpha" "0.5" - параметр устанавливающий прозрачность всей текстуры в общем. Должен использоваться с параметром "$translucent")

"$translucent" "1" - параметр включающий прозрачность текстуры используя альфа канал. Поддерживает полупрозрачность в отличии от "$alphatest". Не совместим с параметром "$envmap". Может потеряться прозрачность.

"$alphatest" "1" - аналогичный "$translucent". Будут отбрасываться четкие тени. Понимает только прозрачные и непрозрачные места (полупрозрачный не принимается). Используется на листьях, сетках, решетках и т. д. где не нужна полупрозрачность.

"$nocull" "1" - параметр дублирует текстуру на обратную сторону полигона модели, но при этом освещение будет одинаковое (баги с освещением будут сильно заметны на моделях, особенно на движущихся). Это не работает на брашах, зато отлично пашет на моделях. Вещь полезная, когда нужно сэкономить.

"$selfillum" "1" -параметр делающий альфа канал не прозрачным а светящимся. Причем светится он будет тем цветом, на котором лежит альфа канал на текстуре.

"$selfillumtint" "[1 1 1]" - управление цветом свечения.

"$selfillummask" "texture" - подключение текстуры свечения. На движке Source 2007 использовать параметр "$selfillumtexture".

"$selfillum_envmapmask_alpha" "1" - должен ли материал использовать текстуру свечения с альфа канала текстуры "$envmapmask".

Прозрачность смешивания на дисплейсментах:

"$blendmodulatetexture" "blend/myblend_test" - параметр шейдера WorldVertexTransition. Устанавливает четкую грань полупрозрачности смешиваемых текстур. Пример: http://developer.valvesoftware.com/w/images/9/9c/Blendmodulate.jpg

$blendmasktransform" - определяет позицию подключаемой текстуры.

Distancealpha

"$distancealpha" -экономная технология для растровых изображений высокого разрешения (4096x4096). Используется в UI, листьях, решетках и т. д. Баг: не правильно отображаются в Hummer'е.

Пример: http://developer.valvesoftware.com/w/images/c/cb/Class_spy_outline.png, в действии: http://developer.valvesoftware.com/w/images/b/b0/Class_spy_outline_ingame.jpg

Исходник:

UnlitGeneric

{
  $basetexture        hud\class_spy_outline
  $translucent        1
  $distancealpha        1
  $softedges                1
  $edgesoftnessstart        .5
  $edgesoftnessend        .46
  $scaleedgesoftnessbasedonscreenres 1
  $glow                1
  $glowcolor        "[0 0 0]"
  $glowalpha        .4
  $glowstart        .1
  $glowend        .5
  $vertexcolor        1
  $vertexalpha        1
  $no_fullbright        1
  $ignorez        1
}

"$distancealpha" "1" -включение эффекта

"$softedges" "1" -эффект мягких краев

"$edgesoftnessstart" ".5" -прозрачность от 50%

"$edgesoftnessend" ".46" -прозрачность до 46%

"$scaleedgesoftnessbasedonscreenres" "1" - уровень мягкости краев

"$glow" "1" -эффект свечения.

"$glowcolor" "[0 0 0]" -цвет эффекта

"$glowalpha" ".4" -прозрачность эффекта (черный полупрозрачный эффект смотрится как тень).

"$glowstart" ".1" - полная интенсивность

"$glowend" ".5" -то, где он становится невидимым.


$outline -тоже самое как glow, но с добавлением определения того, как резко каждое ребро будет появляться.

"$outlinecolor" "[0 0 0]" -цвет контура

"$outlinealpha" -прозрачность контура

"$outlinestart0" -начало эффекта

"$outlinestart1"

"$outlineend0" -конец эффекта

"$outlineend1"

Освещение:

"$bumpmap" "texture"- через этот параметр подключается текстура normal map или ssbump.

"$ssbump" "1" - (self-shadowing bump) включение бампа. В "$bumpmap" подключается текстура бампа. Обращаю внимание что это не обычная нормал мап, и генерируется со своими особенностями. Об этом можно прочитать в разделе Создание карт этой статьи.

"$normalmap" "texture" - через этот параметр подключается текстура normal map

"$dudvmap" "texture" - подключение Du/dv текстуры

"$parallaxmap" "Path/ParallaxmapA" - подключение текстуры параллакса. На данный момент не работает в Source.

"$parallaxmapscale" "1" - скейл подключаемой текстуры.

"$rimlight" "1" - добавление света по краям модели. Пример: http://developer.valvesoftware.com/w/images/f/f9/Heavy_rim.jpg

"$rimlightexponent" 2" - "плотность" света.

"$rimlightboost" ".2" - увеличение силы свечение от окружения.

"$rimmask" "1" - использовать ли альфа канал "$phongexponenttexture"для свечения.

"$rimlightexponent" 2" - "плотность" света.

"$rimlightboost" ".2" - увеличение силы свечение от окружения.

"$rimmask" "1" - использовать ли альфа канал "$phongexponenttexture"для свечения.

"$lightwarptexture" "texture" - подключение текстуры цветокоррекции. Не работает совместно с "$halflambert".

"$halflambert" "1" - включение освещения halflambert. Пример:: http://developer.valvesoftware.com/w/images/1/1d/Alyx_lambert_half_lambert.jpg

"$vertexalpha" и "$vertexcolor"- две команды VMT, которые заставляют поверхность получить свою альфу и цвета от вершинных данных, обеспеченных движком игры.

"$AmbientOcclusion" "1" - включить Ambient Occlusion.

"$AmbientOcclColor" "[1 1 1]" - управление цветом.

"$AmbientOcclTexture" "texture" - подключение текстуры ambient occlusion.


Отражения

Окружение (environment):

"$envmap" "env_cubemap" - подключаем отражения кубмапа (энтитя env_cubemap).

"$envmaptint" "[.25 .25 .25]" - задаем силу отражения 25% для всех трех цветов (RGB).

"$envmapcontrast" "-0.5" - увеличим яркость отражений. Управляет яркостью (не контрастом!) отражаемого. Отрицательные значения усиливают яркость, а положительные уменьшают её (вплоть до черного при значении "5.9"). Эта переменная может иметь значения от "-8.9" до "8.9" (наверно может и больше, но не проверял), но не должна быть равной "-1.0", "0.0" и "1.0" - при этих трех значениях вторая переменная "$envmapsaturation" (см. ниже) не работает. Исходное значение "0.01" соответствует нормальной яркости отражаемого.

"$envmapsaturation" "0.4" - уменьшим до 40% цветность отражений. Управляет насыщенностью цвета отражений, со своими тонкостями: Не должно быть равно "-1" и "1" - при этих значениях отрубается переменная "$envmapcontrast".

Значения:

От "1.01"до  "3" – завал в  теплые цвета + усиление насыщенности цветов. 
"1.01" или  "0.99" –  нормальный цвет отражения,  это точка  отсчета для наших изменений. Ничего не меняет. 
От "0.0" до  "0.99" - "0.0" –  полностью обесцвеченное (ч.б.), "0.99" –нормальное. Все  что между ними – соответственно степень  бесцветности.
От "0.0" до  "-0.99" - "0.0" –  полностью обесцвеченное, а "-0.99" – нормальное, но заваленное в  холодные цвета.
От "1.01" до  "-3" - завал в  холодные цвета + усиление насыщенности цветов.

ВНИМАНИЕ! Эти переменные не работают по отдельности. Для того, чтобы работала хоть одна из них – нужно, чтобы в vmt-файле была и другая! Бред, но что есть – то есть и эти две переменные нам очень понадобятся.

"$envmapframe" "1" - с какого кадра начинать проигрывать текстуру анимированной кубмапы. Требует DX9.

"$envmapmode" "1" - режим отражения.

"$basetexturenoenvmap" "1" - отключение отражения на главной текстуре.

"$basetexture2noenvmap" "1" - отключение отражения на второй главной текстуре. Требует DX9.

"$envmapoptional" - установить какой DX должен рендерить отражения:

   80 (DirectX 8)
   81 (DirectX 8.1)
   90 (DirectX 9)
   95 (DirectX 9 c Shader Model 3)

"$envmapsphere" "1" - определяет, должен ли envmap материала быть spheremap вместо cubemap. При 1 переключение на spheremap.

"$reflectivity" "[.5 .5 .5]" - параметр используемый компилятором VRAD который указывает сколько полученного света должно быть отражено от материала.

Консольные команды: buildcubemaps - просчитать отражения от энтити env_cubemap. В некоторых случаях перед просчетом вводятся команды mat_specular 1 (отключение отражений моделей), и рендерятся на неск. уровнях HDR: hdr_level 1\2\3. Подробнее о постройке http://developer.valvesoftware.com/wiki/Buildcubemaps#Building

Phong

Фонг работает только на моделях и только с картой нормалей ("$bumpmap"). Маска фонга рисуется в альфа канал нормал мап.

Пример:

"VertexLitGeneric"
{
  "$baseTexture"    "models\test"
  "$bumpmap"   "models\test_nrm" 
  "$envmap"   "env_cubemap" 
  "$normalmapalphaenvmapmask"   "1"
  "$envmaptint"   "[.25 .25 .25]"
  "$phong"   "1"
  "$phongboost"   "5"
  "$phongexponent"    "25"
  "$phongfresnelranges"   "[.7 .9 1]"
}


"$phong" "1" -включить эффект.

"$phongboost" "5" - задает силу яркости фонга.

"$phongtint" [R G B] -задает цвет и силу фонга.

"$phongexponent" "25" -показатель степени (силы) фонга

"$phongfresnelranges" "[.7 .9 1]" -освещает только те фейсы которые повернуты к игроку. Указывается в формате [φX φY φZ] где от 0 до 1. Пример: настройка Алекс [0.05 0.5 1] http://developer.valvesoftware.com/w/images/0/0b/Alyxfresnel.jpg


Другие (почти не используемые) параметры фонга:

Карта фонга:

"$BasemapLuminancePhongMask" "1"- зависимость силы фонга от яркости (освещенности) главной текстуры "$basetexture"

"$BasemapAlphaPhongMask" "1" - читать карту фонга с альфа канала главной текстуры "$basetexture"

"$PhongExponentTexture" - дополнительно (ovveride) подключаемая текстура фонга

• Red channel: -экспонент (сила светового эффекта, сильнее или слабее)

• Green channel: Альбедо (если $phongalbedotint 1, больше оттенка)

• Blue channel: -не используется

• Alpha channel: -альфа канал этой тексы может использоваться как $rimlight mask

"$shinyblood" "число" - (в новом Left 4 Dead) блестящая кровь

"$shinybloodexponent" "число" - (в новом Left 4 Dead) сила отблеска крови

"$allowdiffusemodulation" "число" - разрешить модуляцию диффуза

"$DiffuseExp" - сила диффуза

"$PhongDisableHalfLambert" -(с новым Portal 2) используется в портале на NPC босов, отключает "$halflambert". Обязательно должно быть прописано "$halflambert" "0" !

"$AmbientOcclusionTexture" -текстура используемая на лице и глазах. Пример: лицо Алекс.

Цвета фонга:

"$PhongAlbedoTint" -разрешать ли $basetexture повлиять на цвет подсветку Фонга.

"$PhongWarpTexture" -используется для создания эффекта радуги, как это видно на npc_hunters, или стекло отражающего куба в Portal 2.

Specular mask

Внимание! Не работает с параметром "$bumpmap". См. альтернативные методы http://developer.valvesoftware.com/wiki/$envmapmask#Alternative_methods

Пример: http://developer.valvesoftware.com/w/images/d/da/Scanner_mask.jpg

"$envmapmask" "props/tvscreen_test" - определяет зеркальную маску, которая определяет, как сильно каждый пиксель материала отражает свет от "$envmap".

"$envmapmasktransform" "center .5 .5 scale 1 1 rotate 0 translate 0 0" - определяет позицию подключаемой текстуры.

"$envmapmaskscale" "1" - скейл подключаемой текстуры.

"$envmapmaskframe" "1" - с какого кадра начинать проигрывать подключаемую текстуру.

Дополнительные параметры:

"%keywords" "MyTexture" - это ключевое слово, которое позволит вам получить быстрый доступ к текстуре. Это для фильтра в браузере текстур редактора.

"%tooltexture" "texture" - текстура, которая будет отображаться в браузере текстур вместо реальной. Если разрешение реальной 4096х4096 то поставив на "%tooltexture" текстуру с разрешением 128х128 можно в разы повысить производительность эдитора (браузера текстур).

"%compilepassbullets" "1"- если вы захотите чтобы пули пролетали насквозь.

"$model" "1" - указывается когда текстура должна использоваться на модели и используется в шейдере "UnlitGeneric" или "Refract". Используется в старых версиях движка. Без параметра становится прозрачной. На обновленных двигах добавляется автоматически и в принципе работает без нее.

Вода

Пример:

"Water"
{
  "Water_DX60"
  {
  "$fallbackmaterial" "nature/water_dx70"
  }
  "%tooltexture" "dev/water_normal"
  "%compilewater" 1
  "$abovewater" 1
  
  "$envmap" "env_cubemap"
  "$refracttexture" "_rt_WaterRefraction"
  "$refractamount" "1.0"
  "$refracttint" "[0.95 1.0 0.97]"
  
  "$reflecttexture" "_rt_WaterReflection"
  "$reflectamount" "1.0"
  "$reflecttint" "[1 1 1]"
  
  "$scale" "[1 1]"
  
  "$bumpmap" "dev/water_dudv"
  "$normalmap" "dev/water_normal"
  
  "$surfaceprop" "water"
  "$bottommaterial" "dev/dev_waterbeneath2"
  "$bumpframe" "0"
  
  "$fogenable" 1
  "$fogcolor" "{22 20 10}"
  "$fogstart" 1.00
  "$fogend" 400.00
  
  "Proxies"
  {
  "AnimatedTexture"
  {
     "animatedtexturevar" "$normalmap"
     "animatedtextureframenumvar" "$bumpframe"
     "animatedtextureframerate" 30.00
  }
  
  "TextureScroll"
  {
     "texturescrollvar" "$bumptransform"
     "texturescrollrate" .05
     "texturescrollangle" 45.00
  }
  "WaterLOD"
  {
     "dummy" 0
  }
  }
}

Текстуры:

"$abovewater" 1 -будет ли этот материал использоваться выше или ниже поверхности воды.

"$bottommaterial" "dev/dev_waterbeneath2" -материал используемый под поверхностью воды.

"$underwateroverlay" <текстура> -текстура накладываемая на экран игрока под водой. Требует параметра "$abovewater" 0.

"$scroll2" \ "$scroll1" -Если $ scroll1 определен и X не равно нулю, еще два экземпляра карты нормалей будет нарисованы таким образом, что они сливаются вместе. Первый слой в 7 раз больше и поворачивается на 45 °, второй в 2 раза больше и поворачивается на 90 °. Параметры определяют скорость и направление которыми дополнительные слои будут двигаться. Схема работы http://developer.valvesoftware.com/w/images/1/13/Orange_Box_Scrolling_Water.png

"$dudvframe" \ "$bumpframe" -кадр, с которого начинает проигрываться анимация du/dv и bump карты.

Туман (затемнение):

"$fogenable" 1 -включение тумана воды

"$fogcolor" "{22 20 10}" -цвет тумана.

"$fogstart" 1.00 -дистанция от глаз игрока от куда начинает появляться туман

"$fogend" 400.00 -дистанция от глаз игрока где заканчивается туман

Отражение

"$envmap" <env_cubemap / texture> -обеспечивает отражения на простую воду.

"$forcecheap" 1 -сделать эту воду простую (оптимизированную,без отражений) независимо от water_lod_control или пользовательских настроек. Это отключит отражения в режиме реального времени и вместо этого использовать $EnvMap. Преломление предполагается непрозрачно цвета тумана воды.

"$forceexpensive" 1 -переключает рендер воды на более красивый, независимо от water_lod_control карты или настроек пользователя.

"$reflect2dskybox" - (с новым Portal 2) делает чтобы вода отражала только скайбокс.

"$reflectamount" <число> -сила отражений воды.

"$reflectentities" 1 -включение отражения энтитей. По дефолту энтити не отражаются.

"$reflecttint" <RGB> - цвет для отражений реального времени и карт окружения.

"$refractamount" 1 -сила искажений отражений.

"$refracttexture" <текстура> -текстура используемая для преломлений. Для реалтаймовых отражений используйте _rt_WaterRefraction

"$refracttint" <RGB> - цвет преломления. Рекомендуется если установите белый или что-то близкое к белому, края будут корректно отображаться на DX9.

Течение

Пример http://developer.valvesoftware.com/w/images/8/88/L4d2_flowmap_user.jpg

"$flowmap" <texture> -( с новым Left 4 Dead 2 и Portal 2) это текстура, которая определяет скорость потока, углов смещения и прокрутки "$normalmap". Создание данной текстуры описывается в конце статьи.

"$flow_normaluvscale" <число> -скейл нормали. Как правило 100.

"$flow_worlduvscale" <число> -скейл карты потока (flow map). Скейл текстуры фейса воды влияет на этот параметр.

"$flow_uvscrolldistance" <число> -Как далеко вдоль карты потока нормал мапа должна быть искажена. Более высокие значения приводят к большим искажениям.

"$flow_timeintervalinseconds" <число> -время, необходимое для нормал карты чтобы пересечь "$flow_uvscrolldistance".

"$flow_timescale" <число> -изменяет скорость потока, не влияя на силу искажения.

"$flow_bumpstrength" <число от 0 до 1> -насколько рельефная поверхность воды. Выше 1 не рекомендуется.

"$flow_noise_texture" <текстура> - текстура подключаемая чтобы разбить повторение карты нормалей.

"$flow_noise_scale" <число> - сколько раз подстраиваться к текстуре шума в карте нормалей. Обычно около 0,01.

"$flow_debug" 1 -заменяет водную поверхность с буквальным рендерингом карты потока

Другие параметры:

"%compilewater" 1 -объясняет компилятору что текущая поверхность должна быть обработана как вода.

"$surfaceprop" "water" - -объясняет физическому движку что текущая поверхность вода.

"%tooltexture" "dev/water_normal" -указывает какой текстурой будет отображаться эта текстура воды в браузере текстур хаммера.

WaterLOD (proxy) - соединяет материал воды с энтитей water_lod_control. Записывается в прокси параметры текстуры.

Создание карт

Для создания этих карт нам нужна бесплатная программа SSbump Generator. Ее можно скачать здесь http://sourceforge.net/projects/ssbumpgenerator/files/

Normal map

Запускаем программу SSbump Generator, нажимаем кнопку Add image (или Alt+A) загружаем текстуру *.tga (требуется *.tga) с которой будем генерировать нормаль ( Пример http://img853.imageshack.us/img853/8933/tex01.jpg ). Переключаем в программе на генерирование Normal map. Жмем кнопку Generate (или Alt+Пробел). Получаем карту нормали. Пример http://img29.imageshack.us/img29/3125/tex01normal.jpg

SSBump

1) Переключаем в программе на генерирование SSBump. Жмем кнопку Generate (или Alt+Пробел). Получаем заготовку карты нормали. Она будет сине-красно-зеленая. Пример: http://img195.imageshack.us/img195/1170/tex01ssbump.jpg

2) Нажимаем в программе на кнопку Image to height map. Выбираем нашу главную текстуру. Оно сгенерирует ч\б карту Hight map. Это карта высот текстуры. Пример: http://img607.imageshack.us/img607/7475/tex01height.jpg

3) Открываем фотошопом карту нормали (с п.1). Добавляем карту высот в альфа канал (о том как это делается можно прочитать здесь http://www.source-inside.ru/index.php?id=140 ).

4) Экспортируем, подключаем к материалу.


Specular

Спекуляр рисуется вручную. Спекуляр показывает в каких местах и насколько будет текса отражать свет. На черном фоне белым цветом. Белый цвет- отражение света.

Du/dv

Используется в основном в шейдере Refract. Есть 2 пути создания:

1) С помощью nVidia's texture tools http://developer.nvidia.com/legacy-texture-tools для фотошопа.

2) Получение du/dv с нормал мапы. Открываем в фотошоп нормал мап и инвертируем цвета. Заходим в Яркость\контраст (Brightness/Contrast), устанавливаем яркость "-17", контраст "100"

При экспортировании указать формат UV88.

Flow map

1) Вручную:

В целом, пытаются создать карту потока вручную это кошмар. ( Пример http://developer.valvesoftware.com/w/images/5/5a/L4d2_flowmap_tex.jpg ) По ходу рисования цвета рисовать трудно, а затем либо очень трудно согласовать с картой правильно, или придется беспокоиться о швах между брашами ( Пример http://developer.valvesoftware.com/w/images/e/e9/L4d2_flowmap_dev.jpg ). Это всего лишь возможность получить поток по линии (подогнать текстуру воды доя каждого браша и повернуть ее кривые), но под сложные карты не реально подогнать..

Но если вы хотите попробовать, направление потока считываются из красного и зеленого каналов потока на карте. 50% тона означает отсутствие движения.

Красный канал: по оси X

Зеленый канал: по оси Y

Еще в Portal 2 не известно почему используется альфа канал. От сюда и вопрос, почему не использовать синий? Разработчики и сами не знают..

2) С помощью программ:

Valve генерировали карты потока с помощью нерелизового Houdini plugin http://www.sidefx.com/index.php?option=com_content&task=view&id=1774&Itemid=343 . Подробнее о том как все работает см. (6 мб) книгу. http://www.valvesoftware.com/publications/2010/siggraph2010_vlachos_waterflow.pdf

Flesh

(Эффект рендера внутренностей тела.) Эффект тела Алекс. Еп2.

http://enc.nashalife.ru/images/0/03/Alex_flesh.jpg

Управляется энтитей point_flesh_effect_target.

Пример материала:

$FleshInteriorEnabled		1
$FleshInteriorTexture		models/Alyx/alyx_flesh_color
$FleshNormalTexture		models/Alyx/alyx_flesh_normal
$FleshBorderTexture1D		models/Alyx/alyx_flesh_border
$FleshInteriorNoiseTexture	engine/noise-blur-256x256
$FleshSubsurfaceTexture	models/Alyx/alyx_flesh_subsurface
$FleshCubeTexture          	env_cubemap
$FleshBorderNoiseScale		3
$FleshBorderWidth		0.2
$FleshBorderSoftness		0.5
$FleshBorderTint		"[.2 .2 .4]"
$FleshGlossBrightness		1.0
$FleshDebugForceFleshOn	0
$time				0
Proxies
{
  FleshInterior
  {
  }
  CurrentTime
  {
   resultVar $time
  }
}


$FleshInteriorEnabled 1 // Включить эффект

$FleshInteriorTexture models/Alyx/alyx_flesh_color // маска в альфе

$FleshBorderNoiseScale 3 // Кол-во шума для краев

$FleshBorderWidth 0.2 // высота краев эффекта

$FleshBorderSoftness 0.5 // Сглаживание краев должно быть от 0.0 и до 0.5

$FleshBorderTint "[.2 .2 .4]" // контраст \ яркость текстуры краев

$FleshGlossBrightness 1.0 // Яркость текстуры эффекта

$FleshDebugForceFleshOn 0 // переменная разработчиков для теста


Устройство: На примере взаимодействия с npc_vortigaunt.

Энтитя point_flesh_effect_target припаренчивается к модели и цепляется за аттачмент.

Parent: vort_01

Radius: 0

Инпутом SetParent припарентить энтитю к вордигонту vort_01. Далее инпутом SetParentAttachment прицепить к аттачменту (аттачмент правой руки: rightclaw, левой руки: leftclaw)

Для включения эффекта подаем инпут SetRadius с параметром 25 2 0. Пояснений этого параметра на данный момент не имеется, но можно предположить что 25 -действие в радиусе 25 юнитов (дюймов), 2- время плавного включения 2 сек). Для выключения подаем инпут SetRadius с параметром 0 0 0.

Patch shader

Пример:

patch
{
 include materials\models\infected\common\common_infected_shared.vmt
 insert
 {
  $basetexture models\infected\ military_upper_01
 }
}


Параметры:

include - подключаемый базовый материал который нужно унаследовать.

insert - параметры, которые нужно добавить.

replace - параметры, которые нужно заменить.

Единственный недостаток этого шейдера в том, что он не может изменить шейдер материала.


Sprites

"Sprite"
{
 "$basetexture" "sprites/sprite_01"
 "$spriteorientation" "vp_parallel"
 "$spriteorigin" "[ 0.50 0.50 ]"
 "$spritescale" "1"
 "$translucent" "1"
 "$nocull" "1"
 "$vertexcolor" "1"
 "$vertexalpha" "1"
}


"$spriteorientation" "vp_parallel" // обязательный параметр для энтити env_sprite_oriented, определяет поворот спрайта. Переменные:

• parallel_upright //применяется в огне.

• facing_upright //

• vp_parallel // врегда смотрит на игрока. (самый популярный)

• oriented // направленный (смотрит туда куда направлена энтитя)

• vp_parallel_oriented // вращается вместе со спрайтом

"$spriteorigin" "[ 0.50 0.50 ]" // сдвиг спрайта относительно центра по Х и Y

"$spritescale" "1" // масштаб спрайта


Прокси параметры текстур

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

Пример настроек прокси позволяющего плавно мигать материал со скоростью 8 сек:

LightmappedGeneric
{
  $basetexture shadertest/LightmappedTexture
   Proxies
  {
  Sine
  {
   resultVar $alpha
   sineperiod 8
   sinemin  0
   sinemax  1
  }
 }
}


Proxies // подключение параметров прокси

Sine // прокси параметр генерирующий плавное волнообразное изменение значения

resultVar $alpha // параметр текстуры над которым проводятся манипуляции

sineperiod 8 // время эффекта

sinemin 0 // минимально возможное значение изменяемого параметра (в данный момент $alpha, от 0 до 1)

sinemax 1 // макс значение $alpha при котором материал прозрачен

Пример неустойчивости (рандомно) скорости мигания:


$offset 0
 Proxies
 {
     EntityRandom
   {
    resultVar $offset
    }
     Sine
    {
     resultVar	$alpha
     timeoffset	$offset
     sineperiod	8
     sinemin		0
     sinemax		1
    }
}

$offset 0 // объявить свою переменную

EntityRandom // функция которая генерирует рандомное число

resultVar $offset // задать собственную переменную которая будет рандомно генерироватся

timeoffset $offset // использование своей переменной для установки времени эффекта


Пример прокручивающейся текстуры:

"Proxies"
{
 "TextureScroll"
 {
 "textureScrollVar" "$basetexturetransform"
 "textureScrollRate" 0.25
 "textureScrollAngle" 90
 }
}


"textureScrollVar" "$basetexturetransform" // переменная, которой манипулирует прокси

"textureScrollRate" 0.25 // скорость кручения

"textureScrollAngle" 90 // угол на который крутится материал


Смена кадров анимированной текстуры:

  "Proxies"
  {
     "AnimatedTexture"
     {
        "animatedtexturevar" "$basetexture"
        "animatedtextureframenumvar" "$frame"
        "animatedtextureframerate" 20
     }
  }

Существует куча других параметров прокси и их переменных. Их можно найти в этой статье. http://developer.valvesoftware.com/wiki/List_Of_Material_Proxies

Автор: Stridemann

Помощь: Тим