材质代理列表

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)Español (es)中文 (zh)Translate (Translate)
Info content.png
This page is Machine translated
It is not recommended to use machine translation without any corrections.
If the article is not corrected in the long term, it will be removed.
Also, please make sure the article complies with the alternate languages guide.(en)
This notice is put here by LanguageBar template and if you want to remove it after updating the translation you can do so on this page.


这里列出了所有在起源2013系列游戏中可用的材质代理,以及仅出现在特定游戏中的代理(主要是其他Valve游戏)。

待完善: 仍有大量未记录或缺乏足够说明的代理!
Icon-Important.png重要:与材质变量不同,材质代理名称区分大小写。

计算类

Note.png注意:所有涉及整数的运算代理都会转换为浮点结果值,EqualsClamp除外。

Add 将两个变量相加。

srcVar1
srcVar2
resultVar
返回 srcVar1 + srcVar2

Multiply 将两个变量相乘。

srcVar1
srcVar2
resultVar
返回 srcVar1 * srcVar2

Subtract 用第一个变量减去第二个变量。

srcVar1
srcVar2
resultVar
返回 srcVar1 - srcVar2

Divide 将第一个变量除以第二个变量。

srcVar1
srcVar2
resultVar
返回 srcVar1 / srcVar2

Equals 将一个变量的值复制到另一个变量。

srcVar1
resultVar
返回 srcVar1

Abs 计算变量的绝对值。

srcVar1
resultVar
返回 abs(srcVar1)

Frac

返回变量的小数部分。对整数值无变化。
Tip.png提示:frac(4.23) = 0.23
srcVar1
resultVar

Int

返回变量的整数部分。
Tip.png提示:int(4.23) = 4
srcVar1
resultVar

Clamp 将变量限制在指定范围内。srcVar1resultVar可为同一变量。

min
max
srcVar1
resultVar
返回与srcVar1最接近的[min, max]区间值。

LessOrEqual 比较两个值的大小。

lessEqualVar
greaterVar
srcVar1
srcVar2
resultVar
srcVar1 ≤ srcVar2,返回lessEqualVar,否则返回greaterVar

SelectFirstIfNonZero 若第一个变量非零则优先选择该值。

srcVar1
srcVar2
resultVar
srcVar1 == 0,返回srcVar1,否则返回srcVar2

WrapMinMax 将数值约束到指定区间,超出时循环调整。

srcVar1
需要约束的值。
minVal
maxVal
约束范围。若min小于max,则始终返回min。
resultVar
存储结果的变量。

Exponential 生成指数变化的数值。

minVal
maxVal
数值上下限。
srcVar1
offset
scale
resultVar
返回 scale * exp( srcVar1 + offset )
Tip.png提示:exp(n) = en

数值生成类

Sine 生成正弦波

sineperiod
波峰周期(秒)。
sinemin
sinemax
波峰波谷值。
timeoffset
波形起始偏移量。
resultVar
返回 sinemin + (sinemax-sinemin)/2 * (1 + sin( 2*pi/sineperiod * (time + timeoffset) ))

LinearRamp 生成线性递增的浮点值。

rate
每秒增量。
initialValue
地图起始值。
resultVar
返回 rate * time + initialValue
Note.png注意:该值具有连续性,动态改变速率时不会累加之前的值。

CurrentTime 服务器当前地图运行时间(秒)。

resultVar
用于设置$time着色器变量,控制随时间变化的材质效果。

UniformNoise 生成均匀分布的随机噪声。

minVal
maxVal
resultVar
返回[minVal, maxVal]区间内的等概率随机值。

GaussianNoise 生成均值偏向的高斯噪声。

mean
噪声中心均值。
halfWidth
距离均值30%概率出现的边界。
minVal
maxVal
resultVar

MatrixRotate 根据轴和角度生成旋转矩阵

axisVar
旋转轴,格式为[x y z]
angle
绕轴旋转角度(度)。
resultVar
生成变换矩阵,可用于设置$basetexturetransform等变量。

实体数据访问类

这些代理从材质所属实体读取数值。

Warning.png警告:prop_staticworld brushinfodecalinfo_projecteddecal或未命名的info_overlay上使用会导致崩溃。已命名的info_overlay可正常使用。

Alpha 将实体的renderamt值复制到材质参数$alpha

$alpha
材质变量将被设置为实体的renderamt值。

Cycle 输出实体当前动画进度。

start
动画起始输出值(不可为变量引用)。
end
动画结束输出值(不可为变量引用)。
easein
起始缓动效果(不可为变量引用)。
easeout
结束缓动效果(不可为变量引用)。
resultVar
存储结果的变量。

PlayerProximity 输出本地玩家与材质所属实体原点的距离。

scale
结果缩放系数。
resultVar

PlayerTeamMatch 当材质所属实体与本地玩家同队伍时返回1。用于军团要塞2(en)func_respawnroomvisualizer(en)

resultVar
同队伍为1,否则为0。

PlayerView 玩家视角方向与材质实体原点的点积

scale
将结果缩放到0至该值之间。
resultVar

PlayerSpeed 本地玩家移动速度。

scale
结果缩放系数,默认0.005
resultVar

PlayerPosition 本地玩家位置。

scale
结果缩放系数,默认0.005
resultVar
存储向量位置。

EntitySpeed 材质所属实体移动速度。

resultVar
实体当前速度(单位/秒)。

EntityOrigin 材质所属实体原点(不可修改变量)。

$entityorigin
设置为实体原点。

EntityRandom 与材质实体关联的静态随机数,用于多物体效果错开。

scale
结果缩放至0至该值之间。
resultVar
Icon-Bug.png错误:传送门(en)中使用该代理的实体穿过传送门时会导致崩溃。

Health 材质所属实体生命值(0-1)。

scale
结果缩放至0至该值之间。
resultVar
Icon-Bug.png错误:多数游戏中不可用。因KeyValues键名缓存不区分大小写,而材质代理内部区分大小写。解决方法:在gameinfo.txt添加大写的Health键,或在客户端代码中定义小写的材质代理。

{{MatProxyCell|title=IsNPC|desc=检测材质是否应用于NPC。用于半条命2(en)猎人的眼部发光效果。(en)

WorldDims 获取世界实体尺寸(不可修改变量)。

$world_mins
最小X/Y/Z坐标。
$world_maxs
最大X/Y/Z坐标。

CrosshairColor 本地玩家准星颜色(cl_crosshaircolor_(r, g, b))。

resultVar
返回[r g b]值(0-1范围)。

纹理操作类

AnimatedTexture 递增动态VTF的当前帧。

animatedtexturevar
目标纹理(如$basetexture, $bumpmap)。
animatedtextureframenumvar
帧数变量(如$frame, $bumpframe)。
animatedtextureframerate
帧率(FPS),设置后不可更改。

AnimatedEntityTexture 功能同AnimatedTexture,但由实体控制动画启停。 同AnimatedTexture参数。

AnimatedOffsetTexture 功能同AnimatedTexture,但实体生成时启动动画。 同AnimatedTexture参数。

AnimateSpecificTexture 功能同AnimatedTexture,但仅对指定纹理生效。

animatedtexturevar
animatedtextureframenumvar
animatedtextureframerate
onlyAnimateOnTexture
代理生效的纹理完整路径。
待完善: 实际用途?Valve官方四万余个.vmt文件中未见使用案例。

Pupil 用于角色眼睛,根据光照强度调整瞳孔纹理帧数。

TextureVar
目标纹理。
TextureFrameNumVar
帧数变量。
PupilCloseRate
瞳孔闭合速率(默认0.1)。
PupilOpenRate
瞳孔张开速率(默认0.03)。
$lighting
存储光照强度的材质变量(初始值设为0.5)。

TextureTransform 生成纹理变换矩阵,用于$basetexturetransform等参数。

centerVar
scaleVar
rotateVar
translateVar
可选的矩阵输入参数(支持浮点或二维向量)。
resultVar

TextureScroll 根据角度和速率生成纹理平移矩阵/向量。

textureScrollVar
变换结果存储变量。
textureScrollRate
平移速率(单位/秒)。
textureScrollAngle
移动角度(90=上,180=左)。
textureScale
纹理缩放(仅支持单浮点值)。

LampBeam 根据光束方向与视角夹角调整材质透明度(需绑定实体)。

LampHalo 功能同LampBeam,用于光束底部光晕(需绑定实体)。

CustomSteamImageOnModel 用自定义纹理替换$baseTexture(无参数)。

Note.png注意:例如用于军团要塞2(en)中帽子喷涂工具。

实体集成类

MaterialModify / MaterialModifyAnimated

material_modify_control(en)实体配合设置任意参数(需应用于实体)。MaterialModifyAnimated参数同AnimatedTexture。
Note.png注意:从实体子级中查找material_modify_control并应用效果。

WaterLOD

协调water_lod_control(en)实体与材质内部的水体LOD值。
Warning.png警告:两个参数必须在VMT中定义!
$CHEAPWATERSTARTDISTANCE
廉价水体起始距离
Note.png注意:需在代理块外定义
$CHEAPWATERENDDISTANCE
廉价水体结束距离
Note.png注意:需在代理块外定义

BreakableSurface 根据实体持有的材质名称设置基底纹理(需绑定func_breakable_surf(en))。

ConveyorScroll 生成传送带纹理滚动参数(需绑定func_conveyor(en))。

textureScrollVar
存储结果的矩阵/向量变量(如$baseTextureOffset)。

Camo 仅用于材质Dev\dev_camo.vmt(代码大部分禁用)。

$camopatterntexture
迷彩源纹理(I8格式)。
$camoboundingboxmin
$camoboundingboxmax
采样随机点的包围盒。

FleshInterior 输出附近point_flesh_effect_target(en)的位置信息。

$FleshEffectCenterRadius1-4
设置四个血肉目标的世界坐标(第四轴为半径)。
$FleshGlobalOpacity
需存在但未被实际设置。
$FleshSubsurfaceTint
固定为[0 0 0 0]

HeliBlade 控制npc_helicopter(en)旋翼淡入淡出效果。

$fadeout
1=淡出,0=淡入。
$alpha
代理设置的透明度变量。

ParticleSphereProxy 仅用于particle\SmokeStack.vmt(Valve备注:"FIXME: 这个还有用吗?")。

Shadow 仅用于阴影着色器(en)(无已知参数)。

ShadowModel 仅用于阴影模型着色器(en)(无已知参数)。

Thermal 利用$color$ThermalPeriod/Min/Max生成色调缩放正弦波。

$color
作为输入和输出的颜色变量。
$ThermalPeriod
周期(默认1.0)。
$ThermalMin/Max
正弦波乘积的上下限。

ToggleTexture 根据游戏代码(en)设置的帧数切换纹理(需绑定实体)。

toggleTextureVar
目标纹理。
toggleTextureFrameNumVar
帧数变量。
toggleShouldWrap
是否循环(默认启用)。

工具类

Empty 用于注释代理代码块。

Dummy 在代理生命周期打印developer消息。

其他类

(存在于自 求生之路 以来)

ConVar 将变量绑定到客户端控制台变量。

convar
控制台变量名(如mat_specular)。
resultVar
返回数值(向量类型将各分量设为相同值)。

游戏专属类

游戏特定内容

半衰期2 半衰期2


EntityOriginAlyx 与EntityOrigin相同,但X轴偏移15单位。在《橙盒》发布前夕作为临时解决方案创建。

Ep1IntroVortRefract 使用$refractamount生成比例并传递给相同变量,不使用resultVar。在《橙盒》发布前夕作为临时解决方案创建。

VortEmissive 设置$emissiveblendstrength$detailblendfactor来应用第一章开场中弗地冈人的蓝紫色发光效果。

Shield 可能用于组合护盾类型之一。功能等效于TextureScroll和Alpha代理的组合。

$translucency
该变量设置为关联实体的渲染透明度值,类似于Alpha代理
textureScrollVar
textureScrollRate
textureScrollAngle
功能与TextureScroll代理完全相同

军团要塞2 军团要塞2


invis $cloakPassEnabled为true时生效。支持世界模型和视图模型,但不支持队伍颜色。

spy_invis 当$cloakPassEnabled为true时生效。用于玩家世界模型材质。无参数。默认玩家隐身颜色为队伍色。与$weapon_invis和$vm_invis不兼容。

weapon_invis 当$cloakPassEnabled为true时生效。用于武器世界模型材质。无参数。与$spy_invis和$vm_invis不兼容。

vm_invis 当$cloakPassEnabled为true时生效。用于玩家和武器视图模型材质。无参数。与$spy_invis和$weapon_invis不兼容。

building_invis 未使用,计划用于建筑模型材质以实现隐身支持。

CommunityWeapon 当物品标记为社区品质时传递值1,否则传递0。

resultVar

InvulnLevel 传递浮点值设置玩家被超级冲锋时的无敌效果透明度。

resultVar

BurnLevel 传递浮点值设置玩家着火时的火焰覆盖效果透明度。

resultVar

YellowLevel 当玩家被罐装小便击中时传递RGB值。

resultVar

ModelGlowColor 激活时传递硬编码颜色值以创建暴击发光效果。颜色为红色或蓝色。未激活时为纯白(255 255 255)。

resultVar

ItemTintColor 当使用喷漆罐时传递RGB值。数值对应喷漆颜色。未使用时传递0。

resultVar

BuildingRescueLevel 传递变换矩阵设置救援步枪显示屏的振幅。

resultVar

TeamTexture 根据当前队伍改变纹理的动画帧。

resultVar - 仅写入$frame

AnimatedWeaponSheen 执行击杀特效流光效果

animatedtexturevar
animatedtextureframenumvar
animatedtextureframerate

WeaponSkin 为装饰物品设置基础纹理。

ShieldFalloff 脉冲疫苗注射器的超级护盾。

StatTrakIllum 在视图模型上返回0.75。

resultVar

StatTrakDigit 返回物品奇异计数器的单个数字。如果trimZeros为正值,前导零将返回10。

resultVar
displayDigit
trimZeros

StatTrakIcon 无功能。返回常量矩阵。

resultVar

StickybombGlowColor 激活时传递硬编码颜色值以创建'苏格兰防御'选择效果。颜色为红色或蓝色。

resultVar

SniperRifleCharge 狙击步枪蓄力返回变换矩阵。近战武器和医疗枪等其他武器会影响返回值。

resultVar

Heartbeat 返回0.48至0.6之间(多数为0.6)的时变值模拟心跳。

resultVar

WheatlyEyeGlow 使用高斯分布脉冲颜色。用于Ap-Sap物品。

resultVar

BenefactorLevel 根据玩家赠送的礼物数量缩放心跳。返回纹理比例因子,1为最大尺寸(大慈善家),赠送礼物越少因子越大。

resultVar

求生之路2 求生之路2


PlayerTeam 根据玩家当前所在队伍返回对应值。

team
未知
resultVar
0 = 生存者 / 1 = 感染者 / 2 = 观察者

BloodyHands 根据近战武器命中次数返回0到1之间的值。

resultVar
命中次数 / 5
5次命中后不超过1
世界模型和视图模型共享该值

IT 根据生存者是否被Boomer胆汁覆盖返回0到1之间的值。

resultVar
1 = 完全覆盖 / 0 = 未覆盖

BurnLevel 传递浮点值设置感染者燃烧时的火焰覆盖效果透明度。

resultVar
1 = 着火 / 0 = 未着火

BBQLevel 见于materials\models\infected\hulk\hulk_01.vmt

resultVar

异形丛生 异形丛生


NightVisionSelfIllum 当玩家启用夜视效果或狙击镜时,输出强度值调节物体自发光。

resultVar
要修改的变量,通常设置为$selfillumtint
asw_night_vision_self_illum_multiplier
该ConVar指定夜视全开时的输出值
asw_sniper_scope_self_illum_multiplier
该ConVar指定狙击镜激活时的输出值

AlienSurfaceFX 设置$detail纹理及参数以显示火焰、冻结和电击效果。

texturescrollvar
设置为控制细节纹理位移的矩阵或变换变量名,通常为$detailtexturetransform

LanguagePreference (存在于 Alien Swarm: Reactive Drop 之中) 根据客户端语言设置设定值。

resultVar
要修改的变量(如$basetexture
default
无匹配语言时的默认值
english, french, schinese
特定语言的对应值

传送门 传送门传送门2 传送门2


PortalOpenAmount 在传送门上,随传送门开启从0过渡到1。

resultVar

PortalStatic 在传送门上,指定不透明静态效果的渲染强度。1表示未配对的传送门,0表示已开启的传送门。

resultVar

传送门2 传送门2 独有


FizzlerVortex SolidEnergy着色器设置力场效果的各种参数——附近物体位置、传送门射击闪光和能量过渡时间。无参数。

$powerup
力场关闭时过渡到0,开启时过渡到1
$FLOW_VORTEX1
有物体靠近力场时设为1,否则为0
$FLOW_VORTEX_POS1
设为第一个物体的位置
$FLOW_VORTEX2
有第二个物体靠近力场时设为1,否则为0
$FLOW_VORTEX_POS2
设为第二个物体的位置
待完善: 传送门射击闪光设置哪个参数?

WheatlyEyeGlow

推测用于控制Wheatley的发光效果。实际未使用。
待完善: 该代理是否有效?似乎已被Lightedmouth取代

Lightedmouth 用于各种人格核心和PoTaTOS,使其眼部灯光与过场动画同步闪烁。空闲时仍保持部分亮度。在视图模型上也可通过VScript手动控制使GLaDOS显示关闭状态。

resultVar
传递给$selfillumtint的颜色值

LightedFloorButton 用于清洁版超级按钮材质,当材质用于prop_floor_button时设置$selfillumtint为1,否则设为0。此功能无实际益处且会导致其他实体显示异常,推测为测试版残留。

resultVar
使用的颜色值,非按钮时为[0 0 0]

TractorBeam 用于牵引光束效果材质,输出滚动速率并执行其他未知操作。

resultVar
传递给多个TextureScroll代理的textureScrollRate参数

黑山 黑山


TauCharge 见于materials/models/weapons/v_gauss/v_taucannon_core.vmt

resultVar

WebBurnFactorProxy 见于materials/models/props_xen/gonarch/gon_web_tough_burnable.vmt

resultVar

ModelDetailFx 见于materials/models/weapons/v_gauss/v_taucannon_core.vmt

反恐精英:全球攻势 反恐精英:全球攻势


Select 根据输入值选择结果值,类似switch语句

srcVar1
resultVar
default
srcVar1不匹配任何case时的默认返回值
<case>
srcVar1等于<case>时的返回值。可设置多个case

示例来自materials/models/inventory_items/dogtags/dogtags_lightray.vmt

"srcVar1"   "$localTeamNumber"
"resultVar" "$color"
"default"   "[0.680 0.680 0.680]"
"2"         "[0.680 0.544 0.136]"
"3"         "[0.269 0.474 0.680]"
待完善: 是否支持其他case类型?其他游戏是否适用?

GetTeamNumber 获取实体队伍。见于materials/models/inventory_items/dogtags/dogtags_lightray.vmt

resultVar
  • 0: 未分配
  • 1: 观察者
  • 2: 恐怖分子
  • 3: 反恐精英
待完善: 其他游戏是否适用?

survivalteammate 用于在CS:GO Danger Zone Danger Zone中绘制队友。见于materials/models/player/custom_player/econ/body/tm_jumpsuit/jumpsuit_body.vmt

resultVar
当本地玩家是材质应用对象的队友时返回1,否则返回0
Note.png注意:在危险区域外始终返回0——请改用GetTeamNumber!

RemapValClamp 在指定范围内重新映射变量。

range_in_min
range_in_max
range_out_min
range_out_max
srcVar1
resultVar

Modulo 将第一个变量除以第二个变量并将余数写入结果变量。

srcVar1
srcVar2
resultVar

MoneyProxy 读取玩家金钱值。仅在视图模型材质生效。

resultVar

WeaponLabelText 根据displaydigit值计算$basetexture的偏移位置。仅在视图模型生效。

displaydigit

C4CompassArrow [待完善]

IronSightAmount 玩家开镜时返回1,收镜时返回0。

invert
resultvar

ApproachValue 对srcVar1当前值到srcVar2目标值进行平滑过渡。

srcVar1
srcVar2
speed
指定过渡速度,值越大过渡越快
resultVar
过渡结果存储在此变量

Titanfall TitanfallTitanfall 2 Titanfall 2


ADSFraction 根据玩家瞄准程度返回0到1之间的值。

use_weapon_settings
若设置,使用武器的zoom_scope_frac_startzoom_scope_frac_end设置
startFrac
endFrac
invert
spline
scale
resultVar

ADSFOVTarget [待完善]

range
invert
resultVar

BackgroundAmmoColor 根据玩家武器当前弹匣传递RGB值。颜色从蓝->橙->红渐变。

resultVar

ClipAmmo 返回玩家当前武器的弹匣剩余弹药量。

resultVar

ClipAmmoColor 类似BackgroundAmmoColor,但数值变化阈值不同。

resultVar

CockpitLights [待完善]

CockpitOpenAmount [待完善]

CockpitScreen [待完善]

EntityScript 调用VScript函数并返回值。

scriptFuncName
resultVar

Holosight 类似ADSFraction,但似乎没有配置选项。

resultVar

HoloSightOffset 基于UV中心相对于二维矢量$attachment位置的基准偏移量。

attachmentName
horizontalScalar
verticalScalar
resultVar

示例来自materials/models/weapons/attachments/hcog_reticle_front.vmt:

"attachmentName"   "HCOG_REAR"
"horizontalScalar" "0.55"
"verticalScalar"   "-0.72"
"resultVar"         "$holoOffset"

MaxCarryAmmo 返回玩家当前武器的最大后备弹药容量。

resultVar
Icon-Bug.png错误:若武器不使用弹匣则失效  (tested in: Titanfall 2)

MaxClipAmmo 返回玩家当前武器的最大弹匣容量。

resultVar

MiniMap [待完善]

resultVar

NumericCounterAtlasFrame [待完善]

value
digitIndex
resultAtlasFrameIndexVar

ProgressBar [待完善]

value
max
resultVar
结果为变换矩阵。

RemainingAmmo 返回玩家当前武器的后备剩余弹药量。

resultVar
Icon-Bug.png错误:若武器不使用弹匣则失效  (tested in: Titanfall 2)

RemainingAmmoColor 类似BackgroundAmmoColor,但使用武器的后备弹药量。

resultVar
Icon-Bug.png错误:若武器不使用弹匣则失效  (tested in: Titanfall 2)

RemainingClipCount 返回玩家当前武器的最大后备弹药量除以最大弹匣容量。

resultVar

ScriptModify 调用VScript函数并返回值。

scriptFuncName
resultVar

示例来自materials/vgui/hud/compass_ticker.vmt:

"scriptFuncName" "VMTCallback_CompassTickerOffset"
"resultVar" "$offset"
证实:EntityScript功能相同?

TextureAtlas [待完善]

frameSize
frameStart
resultVar

TickCounterAtlasFrames [待完善]

tickCount
rowLength
rowIndex
atlasFrameSize
resultAtlasFrameStartVar
resultAtlasFrameCountVar

WeaponChargeFraction 根据玩家当前武器的充能程度返回0到1之间的值。

resultVar

另请参阅