Zh/List of material proxies: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
(deepseek translation)
 
(deepseek translation)
Line 1: Line 1:
<!-- {{Page Help|wikilink=Material Proxies}} 很遗憾这个页面鲜有人关注... 并且它只在三个VDC页面上被使用? -->
<!-- {{Page Help|wikilink=Material Proxies}} 很不幸这个页面帮助无人问津...且仅在三个VDC页面中使用过?? -->
{{lang|材质代理列表}}
{{Machine Translation}}
{{translate}}
{{LanguageBar|title=材质代理列表}}
所有可在{{src13}}系列游戏中[[Material|材质]]中使用的[[Material Proxies|材质代理]]均列于此,包含仅出现在特定游戏中的代理(多为其他Valve作品)<br>
这里列出了所有在{{src13}}系列游戏中可用的[[材质代理]],以及仅出现在特定游戏中的代理(主要是其他Valve游戏)。<br>
{{todo|仍有大量未记录或文档不足的代理!<!-- 例如? -->}}
{{todo|仍有大量未记录或缺乏足够说明的代理!<!-- 例如? -->}}
{{important|与材质变量不同,材质代理名称区分大小写。}}
{{important|与材质变量不同,材质代理名称区分大小写。}}
== 数值运算 ==
 
{{note|以下所有涉及整数的运算代理(除<code>Equals</code>和<code>Clamp</code>外)都会将结果转换为浮点数。}}
== 计算类 ==
{{MatProxyCell|title=Add|desc=对两个变量进行加法运算。|arguments=
{{note|所有涉及整数的运算代理都会转换为浮点结果值,<code>Equals</code>和<code>Clamp</code>除外。}}
 
{{MatProxyCell|title=Add|desc=将两个变量相加。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>srcVar1 + srcVar2</code>
: 返回 <code>srcVar1 + srcVar2</code>
}}
}}
{{MatProxyCell|title=Multiply|desc=对两个变量进行乘法运算。|arguments=
 
{{MatProxyCell|title=Multiply|desc=将两个变量相乘。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>srcVar1 * srcVar2</code>
: 返回 <code>srcVar1 * srcVar2</code>
}}
}}
{{MatProxyCell|title=Subtract|desc=用第一个变量减去第二个变量。|arguments=
{{MatProxyCell|title=Subtract|desc=用第一个变量减去第二个变量。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>srcVar1 - srcVar2</code>
: 返回 <code>srcVar1 - srcVar2</code>
}}
}}
{{MatProxyCell|title=Divide|desc=用第一个变量除以第二个变量。|arguments=
 
{{MatProxyCell|title=Divide|desc=将第一个变量除以第二个变量。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>srcVar1 / srcVar2</code>
: 返回 <code>srcVar1 / srcVar2</code>
}}
}}
{{MatProxyCell|title=Equals|desc=将一个变量的值复制到另一个变量。|arguments=
{{MatProxyCell|title=Equals|desc=将一个变量的值复制到另一个变量。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>srcVar1</code>
: 返回 <code>srcVar1</code>
}}
}}
{{MatProxyCell|title=Abs|desc=计算变量的绝对值(即[[unsigned|无符号值]])。|arguments=
 
{{MatProxyCell|title=Abs|desc=计算变量的绝对值。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>abs(srcVar1)</code>
: 返回 <code>abs(srcVar1)</code>
}}
}}
{{MatProxyCell|title=Frac|desc=返回变量的小数部分。对于整数值无变化。{{tip|frac(4.23) = .23}}|arguments=
 
{{MatProxyCell|title=Frac|desc=返回变量的小数部分。对整数值无变化。{{tip|frac(4.23) {{=}} 0.23}}|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=Int|desc=返回变量的整数部分。{{tip|int(4.23) = 4}}|arguments=
 
{{MatProxyCell|title=Int|desc=返回变量的整数部分。{{tip|int(4.23) {{=}} 4}}|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=Clamp|desc=将变量限制在指定范围内。<code>srcVar1</code>和<code>resultVar</code>可为同一变量。|arguments=
{{MatProxyCell|title=Clamp|desc=将变量限制在指定范围内。<code>srcVar1</code>和<code>resultVar</code>可为同一变量。|arguments=
; <code>min</code>
; <code>min</code>
Line 54: Line 64:
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 返回最接近<code>srcVar1</code>且在<code>[min, max]</code>区间内的值。
: 返回与<code>srcVar1</code>最接近的<code>[min, max]</code>区间值。
}}
}}
{{MatProxyCell|title=LessOrEqual|desc=比较第一个值与第二个值的大小。|arguments=
 
{{MatProxyCell|title=LessOrEqual|desc=比较两个值的大小。|arguments=
; <code>lessEqualVar</code>
; <code>lessEqualVar</code>
; <code>greaterVar</code>
; <code>greaterVar</code>
Line 62: Line 73:
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 若 <code>srcVar1 srcVar2</code> 返回 <code>lessEqualVar</code>,否则返回 <code>greaterVar</code>
: 若<code>srcVar1 &le; srcVar2</code>,返回<code>lessEqualVar</code>,否则返回<code>greaterVar</code>
}}
}}
{{MatProxyCell|title=SelectFirstIfNonZero|desc=当第一个值非零时优先选择该值。|arguments=
 
{{MatProxyCell|title=SelectFirstIfNonZero|desc=若第一个变量非零则优先选择该值。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 若 <code>srcVar1 == 0</code> 返回 <code>srcVar1</code>,否则返回 <code>srcVar2</code>
: 若<code>srcVar1 {{=}}{{=}} 0</code>,返回<code>srcVar1</code>,否则返回<code>srcVar2</code>
}}
}}
{{MatProxyCell|title=WrapMinMax|desc=将数值约束在指定范围内,超出时循环处理。|arguments=
 
{{MatProxyCell|title=WrapMinMax|desc=将数值约束到指定区间,超出时循环调整。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
: 待约束的值
: 需要约束的值。
; <code>minVal</code>
; <code>minVal</code>
; <code>maxVal</code>
; <code>maxVal</code>
: 约束范围。若最小值小于最大值,则始终返回最小值
: 约束范围。若min小于max,则始终返回min。
; <code>resultVar</code>
; <code>resultVar</code>
: 结果写入变量
: 存储结果的变量。
}}
}}
{{MatProxyCell|title=Exponential|desc=生成遵循[[Wikipedia:Exponential function|指数函数]]变化的值。|arguments=
 
{{MatProxyCell|title=Exponential|desc=生成[[Wikipedia:Exponential function|指数变化]]的数值。|arguments=
; <code>minVal</code>
; <code>minVal</code>
; <code>maxVal</code>
; <code>maxVal</code>
: 上下限值约束
: 数值上下限。
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>offset</code>
; <code>offset</code>
Line 90: Line 104:
}}
}}


== 数值生成 ==
== 数值生成类 ==


{{MatProxyCell|title=Sine|desc=生成[[w:sine wave|正弦波]]数值。|arguments=
{{MatProxyCell|title=Sine|desc=生成[[w:sine wave|正弦波]]|arguments=
; <code>sineperiod</code>
; <code>sineperiod</code>
: 波峰周期(秒)
: 波峰周期(秒)。
; <code>sinemin</code>
; <code>sinemin</code>
; <code>sinemax</code>
; <code>sinemax</code>
: 波形上下极值
: 波峰波谷值。
; <code>timeoffset</code>
; <code>timeoffset</code>
: 波形起始位置偏移量
: 波形起始偏移量。
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>sinemin + (sinemax-sinemin)/2 * (1 + sin( 2*pi/sineperiod * (time + timeoffset) ))</code>
: 返回 <code>sinemin + (sinemax-sinemin)/2 * (1 + sin( 2*pi/sineperiod * (time + timeoffset) ))</code>
}}
}}
{{MatProxyCell|title=LinearRamp|desc=生成持续递增的[[float|浮点]]数值。|arguments=
 
{{MatProxyCell|title=LinearRamp|desc=生成线性递增的浮点值。|arguments=
; <code>rate</code>
; <code>rate</code>
: 每秒增量
: 每秒增量。
; <code>initialValue</code>
; <code>initialValue</code>
: 地图初始值
: 地图起始值。
; <code>resultVar</code>
; <code>resultVar</code>
: 返回 <code>rate * time + initialValue</code>
: 返回 <code>rate * time + initialValue</code>
{{note|该值''并非''预期中的连续性值,即若动态改变速率时不会叠加到之前的值上}}
{{note|该值''''具有连续性,动态改变速率时不会累加之前的值。}}
}}
}}
{{MatProxyCell|title=CurrentTime|desc=获取当前地图在服务器上的运行时长(秒)。|arguments=
 
{{MatProxyCell|title=CurrentTime|desc=服务器当前地图运行时间(秒)。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 该值通常用于设置<code>$time</code>着色器变量,供多个着色器随时间调整效果
: 用于设置<code>$time</code>着色器变量,控制随时间变化的材质效果。
}}
}}


{{MatProxyCell|title=UniformNoise|desc=生成均匀分布随机噪声信号。|arguments=
{{MatProxyCell|title=UniformNoise|desc=生成均匀分布的随机噪声。|arguments=
; <code>minVal</code>
; <code>minVal</code>
; <code>maxVal</code>
; <code>maxVal</code>
; <code>resultVar</code>
; <code>resultVar</code>
: <code>[minVal, maxVal]</code>范围内等概率返回随机值
: 返回<code>[minVal, maxVal]</code>区间内的等概率随机值。
}}
}}
{{MatProxyCell|title=GaussianNoise|desc=生成均值偏向的高斯噪声信号。|arguments=
 
{{MatProxyCell|title=GaussianNoise|desc=生成均值偏向的高斯噪声。|arguments=
; <code>mean</code>
; <code>mean</code>
: 噪声中心均值
: 噪声中心均值。
; <code>halfWidth</code>
; <code>halfWidth</code>
: 距均值30%概率出现的边界距离
: 距离均值30%概率出现的边界。
; <code>minVal</code>
; <code>minVal</code>
; <code>maxVal</code>
; <code>maxVal</code>
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=MatrixRotate|desc=根据指定轴和角度生成[[rotation matrix|旋转矩阵]]。|arguments=
 
{{MatProxyCell|title=MatrixRotate|desc=根据轴和角度生成[[rotation matrix|旋转矩阵]]。|arguments=
; <code>axisVar</code>
; <code>axisVar</code>
: 旋转轴,格式为<code>[x y z]</code>
: 旋转轴,格式为<code>[x y z]</code>
; <code>angle</code>
; <code>angle</code>
: 绕轴旋转角度(度)
: 绕轴旋转角度(度)。
; <code>resultVar</code>
; <code>resultVar</code>
: 生成适用于<code>$basetexturetransform</code>等变量的变换矩阵
: 生成变换矩阵,可用于设置<code>$basetexturetransform</code>等变量。
}}
}}


== 实体数据获取 ==
== 实体数据访问类 ==


这些代理用于读取材质所属实体的数据。
这些代理从材质所属实体读取数值。
{{warning|在prop_static或世界实体上使用会导致崩溃。命名覆盖物(named overlays)可安全使用}}
{{warning|在[[prop_static]]、[[world brush]]、[[infodecal]]、[[info_projecteddecal]]或未命名的[[info_overlay]]上使用会导致崩溃。已命名的[[info_overlay]]可正常使用。}}


{{MatProxyCell|title=Alpha|desc=将实体的渲染透明度值复制到<code>$alpha</code>材质参数。|arguments=
{{MatProxyCell|title=Alpha|desc=将实体的{{code|renderamt}}值复制到材质参数<code>$alpha</code>|arguments=
; <code>$alpha</code>
; <code>$alpha</code>
: 设置材质透明度变量为实体渲染透明度值
: 材质变量将被设置为实体的{{code|renderamt}}值。
}}
}}
{{MatProxyCell|title=Cycle|desc=输出实体当前动画进度。|arguments=
{{MatProxyCell|title=Cycle|desc=输出实体当前动画进度。|arguments=
; <code>start</code>
; <code>start</code>
: 动画起始输出值(不可使用变量引用)
: 动画起始输出值(不可为变量引用)。
; <code>end</code>
; <code>end</code>
: 动画结束输出值(不可使用变量引用)
: 动画结束输出值(不可为变量引用)。
; <code>easein</code>
; <code>easein</code>
: 起始缓动效果(不可使用变量引用)
: 起始缓动效果(不可为变量引用)。
; <code>easeout</code>
; <code>easeout</code>
: 结束缓动效果(不可使用变量引用)
: 结束缓动效果(不可为变量引用)。
; <code>resultVar</code>
; <code>resultVar</code>
: 结果存储变量
: 存储结果的变量。
}}
}}
{{MatProxyCell|title=PlayerProximity|desc=输出本地玩家与材质所属实体原点的距离(单位)。|arguments=
 
{{MatProxyCell|title=PlayerProximity|desc=输出本地玩家与材质所属实体原点的距离。|arguments=
; <code>scale</code>
; <code>scale</code>
: 结果乘数因子
: 结果缩放系数。
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=PlayerTeamMatch|desc=当材质所属实体与本地玩家队伍匹配时返回1。{{tf2}}中用于[[func_respawnroomvisualizer]]。|arguments=
 
{{MatProxyCell|title=PlayerTeamMatch|desc=当材质所属实体与本地玩家同队伍时返回1。用于{{L|TF2|军团要塞2}}的{{L|func_respawnroomvisualizer}}。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 同队伍时返回1,否则返回0
: 同队伍为1,否则为0。
}}
}}
{{MatProxyCell|title=PlayerView|desc=计算玩家视角方向与材质所属实体原点的[[dot product|点积]]。|arguments=
 
{{MatProxyCell|title=PlayerView|desc=玩家视角方向与材质实体原点的[[dot product|点积]]。|arguments=
; <code>scale</code>
; <code>scale</code>
: 将结果缩放至0到该值之间
: 将结果缩放到0至该值之间。
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=PlayerSpeed|desc=本地玩家移动速度。|arguments=
{{MatProxyCell|title=PlayerSpeed|desc=本地玩家移动速度。|arguments=
; <code>scale</code>
; <code>scale</code>
: 速度乘数因子(默认<code>0.005</code>
: 结果缩放系数,默认<code>0.005</code>
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=PlayerPosition|desc=本地玩家位置坐标。|arguments=
 
{{MatProxyCell|title=PlayerPosition|desc=本地玩家位置。|arguments=
; <code>scale</code>
; <code>scale</code>
: 坐标乘数因子(默认<code>0.005</code>
: 结果缩放系数,默认<code>0.005</code>
; <code>resultVar</code>
; <code>resultVar</code>
: 向量位置输出
: 存储向量位置。
}}
}}
{{MatProxyCell|title=EntitySpeed|desc=材质所属实体的移动速度。|arguments=
 
{{MatProxyCell|title=EntitySpeed|desc=材质所属实体移动速度。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 当前速度(单位/秒)
: 实体当前速度(单位/秒)。
}}
}}


{{MatProxyCell|title=EntityOrigin|desc=材质所属实体原点坐标(目标变量不可修改)。|arguments=
{{MatProxyCell|title=EntityOrigin|desc=材质所属实体原点(不可修改变量)。|arguments=
; <code>$entityorigin</code>
; <code>$entityorigin</code>
: 设置为实体原点坐标
: 设置为实体原点。
}}
}}
{{MatProxyCell|title=EntityRandom|desc=与材质所属实体关联的静态随机数,用于多物体效果错开。|arguments=
 
{{MatProxyCell|title=EntityRandom|desc=与材质实体关联的静态随机数,用于多物体效果错开。|arguments=
; <code>scale</code>
; <code>scale</code>
: 将结果缩放至0到该值之间
: 结果缩放至0至该值之间。
; <code>resultVar</code>
; <code>resultVar</code>
{{bug|在{{portal}}中使用该代理的实体穿过传送门时会崩溃}}
{{bug|在{{L|Portal|传送门}}中使用该代理的实体穿过传送门时会导致崩溃。}}
}}
}}
{{MatProxyCell|title=Health|desc=材质所属实体的生命值(0-1)。|arguments=
 
{{MatProxyCell|title=Health|desc=材质所属实体生命值(0-1)。|arguments=
; <code>scale</code>
; <code>scale</code>
: 将结果缩放至0到该值之间
: 结果缩放至0至该值之间。
; <code>resultVar</code>
; <code>resultVar</code>
{{bug|多数游戏中失效。因[[KeyValues]]采用不区分大小写的键值缓存,而材质代理内部是大小写敏感查询。可通过在[[gameinfo.txt]]添加大写<code>Health</code>键或在客户端代码中使用小写材质代理解决}}
{{bug|多数游戏中不可用。因[[KeyValues]]键名缓存不区分大小写,而材质代理内部区分大小写。解决方法:在[[gameinfo.txt]]添加大写的<code>Health</code>键,或在客户端代码中定义小写的材质代理。}}
}}
}}
{{MatProxyCell|title=IsNPC|desc=判断材质是否应用于NPC。{{hl2}}中用于[[npc_hunter]]眼部发光(在尸体上保持关闭)。|arguments=
 
{{MatProxyCell|title=IsNPC|desc=检测材质是否应用于NPC。用于{{L|HL2|半条命2}}中{{L|npc_hunter|猎人的眼部发光效果。|arguments=
; <code>scale</code>
; <code>scale</code>
: 应用于NPC时的返回值(虽名为scale但实际不进行乘法操作)
: 应用于NPC时的返回值(须为浮点数)。
; <code>resultVar</code>
; <code>resultVar</code>
: 应用于NPC时返回<code>scale</code>值,否则保持0
: 若应用于NPC则为<code>scale</code>值,否则保持0。
}}
}}
{{MatProxyCell|title=WorldDims|desc=获取[[world|世界]]实体维度(目标变量不可修改)。|arguments=
 
{{MatProxyCell|title=WorldDims|desc=获取[[world|世界实体]]尺寸(不可修改变量)。|arguments=
; <code>$world_mins</code>
; <code>$world_mins</code>
: 设置为最小X/Y/Z坐标
: 最小X/Y/Z坐标。
; <code>$world_maxs</code>
; <code>$world_maxs</code>
: 设置为最大X/Y/Z坐标
: 最大X/Y/Z坐标。
}}
}}
{{MatProxyCell|title=CrosshairColor|desc=获取本地玩家准星颜色(cl_crosshaircolor_(r, g, b))。|arguments=
 
{{MatProxyCell|title=CrosshairColor|desc=本地玩家准星颜色(cl_crosshaircolor_(r, g, b))。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 返回0-1范围的[r g b]
: 返回[r g b]值(0-1范围)。
}}
}}


== 纹理操作 ==
== 纹理操作类 ==


{{MatProxyCell|title=AnimatedTexture|desc=递增动态VTF的当前帧。|arguments=
{{MatProxyCell|title=AnimatedTexture|desc=递增动态VTF的当前帧。|arguments=
; <code>animatedtexturevar</code>
; <code>animatedtexturevar</code>
: 目标纹理变量(如<code>$basetexture</code>, <code>$bumpmap</code>等)
: 目标纹理(如<code>$basetexture</code>, <code>$bumpmap</code>)。
; <code>animatedtextureframenumvar</code>
; <code>animatedtextureframenumvar</code>
: 帧数变量(如<code>$frame</code>, <code>$bumpframe</code>等)
: 帧数变量(如<code>$frame</code>, <code>$bumpframe</code>)。
; <code>animatedtextureframerate</code>
; <code>animatedtextureframerate</code>
: 固定帧率(设置后不可更改)
: 帧率(FPS),设置后不可更改。
}}
}}
{{MatProxyCell|title=AnimatedEntityTexture|desc=功能同AnimatedTexture,但由实体控制动画启停。|arguments=
{{MatProxyCell|title=AnimatedEntityTexture|desc=功能同AnimatedTexture,但由实体控制动画启停。|arguments=
; <code>animatedtexturevar</code>
同AnimatedTexture参数。
; <code>animatedtextureframenumvar</code>
; <code>animatedtextureframerate</code>
}}
}}
{{MatProxyCell|title=AnimatedOffsetTexture|desc=功能同AnimatedTexture,但动画在实体生成时启动。|arguments=
 
; <code>animatedtexturevar</code>
{{MatProxyCell|title=AnimatedOffsetTexture|desc=功能同AnimatedTexture,但实体生成时启动动画。|arguments=
; <code>animatedtextureframenumvar</code>
同AnimatedTexture参数。
; <code>animatedtextureframerate</code>
}}
}}
{{MatProxyCell|title=AnimateSpecificTexture|desc=功能同AnimatedTexture,但仅限指定纹理。|arguments=
 
{{MatProxyCell|title=AnimateSpecificTexture|desc=功能同AnimatedTexture,但仅对指定纹理生效。|arguments=
; <code>animatedtexturevar</code>
; <code>animatedtexturevar</code>
; <code>animatedtextureframenumvar</code>
; <code>animatedtextureframenumvar</code>
; <code>animatedtextureframerate</code>
; <code>animatedtextureframerate</code>
; <code>onlyAnimateOnTexture</code>
; <code>onlyAnimateOnTexture</code>
: 代理生效的完整纹理路径
: 代理生效的纹理完整路径。
{{todo|用途未知,Valve官方约4万份.vmt文件中未见使用}}
{{todo|实际用途?Valve官方四万余个.vmt文件中未见使用案例。}}
}}
}}
{{MatProxyCell|title=Pupil|desc=用于角色眼睛,根据光照强度调整纹理帧数。|arguments=
 
{{MatProxyCell|title=Pupil|desc=用于角色眼睛,根据光照强度调整瞳孔纹理帧数。|arguments=
; <code>TextureVar</code>
; <code>TextureVar</code>
: 目标纹理变量
: 目标纹理。
; <code>TextureFrameNumVar</code>
; <code>TextureFrameNumVar</code>
: 帧数变量
: 帧数变量。
; <code>PupilCloseRate</code>
; <code>PupilCloseRate</code>
: 瞳孔闭合速率(默认0.1)
: 瞳孔闭合速率(默认0.1)。
; <code>PupilOpenRate</code>
; <code>PupilOpenRate</code>
: 瞳孔张开速率(默认0.03)
: 瞳孔张开速率(默认0.03)。
; <code>$lighting</code>
; <code>$lighting</code>
: 存储光照平均值(0-1)的材质变量,初始化应设为0.5
: 存储光照强度的材质变量(初始值设为0.5)。
}}
}}
{{MatProxyCell|title=TextureTransform|desc=生成用于[[$basetexturetransform]]等的纹理变换矩阵。|arguments=
 
{{MatProxyCell|title=TextureTransform|desc=生成纹理变换矩阵,用于<code>$basetexturetransform</code>等参数。|arguments=
; <code>centerVar</code>
; <code>centerVar</code>
; <code>scaleVar</code>
; <code>scaleVar</code>
; <code>rotateVar</code>
; <code>rotateVar</code>
; <code>translateVar</code>
; <code>translateVar</code>
: 可选输入变量(支持浮点或二维向量)
: 可选的矩阵输入参数(支持浮点或二维向量)。
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=TextureScroll|desc=生成指定角度和速率的纹理位移矩阵/向量。|arguments=
 
{{MatProxyCell|title=TextureScroll|desc=根据角度和速率生成纹理平移矩阵/向量。|arguments=
; <code>textureScrollVar</code>
; <code>textureScrollVar</code>
: 变换结果变量
: 变换结果存储变量。
; <code>textureScrollRate</code>
; <code>textureScrollRate</code>
: 位移速率(单位/秒)
: 平移速率(单位/秒)。
; <code>textureScrollAngle</code>
; <code>textureScrollAngle</code>
: 位移角度(90=上,180=左等)
: 移动角度(90=上,180=左)。
; <code>textureScale</code>
; <code>textureScale</code>
: 纹理缩放(仅支持单浮点,默认1.0)
: 纹理缩放(仅支持单浮点值)。
}}
}}


{{MatProxyCell|title=LampBeam|desc=根据光束方向与视角角度调整材质透明度,用于体积光淡出效果。必须附加到实体。}}
{{MatProxyCell|title=LampBeam|desc=根据光束方向与视角夹角调整材质透明度(需绑定实体)。}}
{{MatProxyCell|title=LampHalo|desc=类似LampBeam,用于光束根部光晕效果。必须附加到实体。}}
{{MatProxyCell|title=LampHalo|desc=功能同LampBeam,用于光束底部光晕(需绑定实体)。}}
{{MatProxyCell|title=CustomSteamImageOnModel|desc=用自定义纹理替换$baseTexture。无参数。
{{MatProxyCell|title=CustomSteamImageOnModel|desc=用自定义纹理替换<code>$baseTexture</code>(无参数)。
{{note|例如{{tf2}}中用于在帽子上使用贴纸工具}}
{{note|例如用于{{L|TF2|军团要塞2}}中帽子喷涂工具。}}
}}
}}


== 实体集成 ==
== 实体集成类 ==


{{MatProxyCell|title=MaterialModify / MaterialModifyAnimated|desc=配合[[material_modify_control]]实体通过地图I/O配置参数。仅当材质应用于实体时有效。MaterialModify无参数,MaterialModifyAnimated参数同AnimatedTexture}}
{{MatProxyCell|title=MaterialModify / MaterialModifyAnimated|desc=与{{L|material_modify_control}}实体配合设置任意参数(需应用于实体)。MaterialModifyAnimated参数同AnimatedTexture。{{note|从实体子级中查找<kbd>material_modify_control</kbd>并应用效果。}}
{{MatProxyCell|title=WaterLOD|desc=协调地图[[water_lod_control]]实体与材质内部的水体LOD值。{{warning|两个参数必须同时在VMT中定义}}|arguments=
}}
 
{{MatProxyCell|title=WaterLOD|desc=协调{{L|water_lod_control}}实体与材质内部的水体LOD值。{{warning|两个参数''必须''在VMT中定义!}}|arguments=
; <code>$CHEAPWATERSTARTDISTANCE</code>
; <code>$CHEAPWATERSTARTDISTANCE</code>
: 廉价水效果起始距离{{note|须在代理块外设置}}
: 廉价水体起始距离{{note|需在代理块外定义}}
;<code>$CHEAPWATERENDDISTANCE</code>
; <code>$CHEAPWATERENDDISTANCE</code>
: 廉价水效果结束距离{{note|须在代理块外设置}}
: 廉价水体结束距离{{note|需在代理块外定义}}
}}
}}
{{MatProxyCell|title=BreakableSurface|desc=根据实体持有的材质名称设置基底纹理(用于破碎表面切换)。必须附加到[[func_breakable_surf]]实体}}
 
{{MatProxyCell|title=ConveyorScroll|desc=生成与[[func_conveyor]]实体设置匹配的传送带纹理位移参数。必须附加到对应实体。|arguments=
{{MatProxyCell|title=BreakableSurface|desc=根据实体持有的材质名称设置基底纹理(需绑定{{L|func_breakable_surf}})。}}
{{MatProxyCell|title=ConveyorScroll|desc=生成传送带纹理滚动参数(需绑定{{L|func_conveyor}})。|arguments=
; <code>textureScrollVar</code>
; <code>textureScrollVar</code>
: 结果变量(需为矩阵/向量类型,如<code>$baseTextureOffset</code>
: 存储结果的矩阵/向量变量(如<code>$baseTextureOffset</code>)。
}}
}}
{{MatProxyCell|title=Camo|desc=仅被<code>Dev\dev_camo.vmt</code>材质使用,生成环境匹配纹理(原计划用于[[Npc_combine_s|联合军精英]])。因代码禁用不可用。|arguments=
 
{{MatProxyCell|title=Camo|desc=仅用于材质<code>Dev\dev_camo.vmt</code>(代码大部分禁用)。|arguments=
; <code>$camopatterntexture</code>
; <code>$camopatterntexture</code>
: 迷彩源纹理(I8格式)
: 迷彩源纹理(I8格式)。
; <code>$camoboundingboxmin</code>
; <code>$camoboundingboxmin</code>
; <code>$camoboundingboxmax</code>
; <code>$camoboundingboxmax</code>
: 颜色采样边界框
: 采样随机点的包围盒。
}}
}}
{{MatProxyCell|title=FleshInterior|desc=输出附近[[point_flesh_effect_target]]位置供[[$flesh]]效果使用。|arguments=
 
; <code>$FleshEffectCenterRadius1</code>
{{MatProxyCell|title=FleshInterior|desc=输出附近{{L|point_flesh_effect_target}}的位置信息。|arguments=
; <code>$FleshEffectCenterRadius2</code>
; <code>$FleshEffectCenterRadius1-4</code>
; <code>$FleshEffectCenterRadius3</code>
: 设置四个血肉目标的世界坐标(第四轴为半径)。
; <code>$FleshEffectCenterRadius4</code>
: 设置为四个血肉目标的世界坐标(第四轴为半径)
; <code>$FleshGlobalOpacity</code>
; <code>$FleshGlobalOpacity</code>
: 需存在但不被实际设置
: 需存在但未被实际设置。
; <code>$FleshSubsurfaceTint</code>
; <code>$FleshSubsurfaceTint</code>
: 固定为<code>[0 0 0 0]</code>
: 固定为<code>[0 0 0 0]</code>
}}
}}
{{MatProxyCell|title=HeliBlade|desc=控制[[npc_helicopter]]旋翼过渡效果。|arguments=
 
{{MatProxyCell|title=HeliBlade|desc=控制{{L|npc_helicopter}}旋翼淡入淡出效果。|arguments=
; <code>$fadeout</code>
; <code>$fadeout</code>
: 1=淡出,0=淡入
: 1=淡出,0=淡入。
; <code>$alpha</code>
; <code>$alpha</code>
: 代理设置的透明度变量
: 代理设置的透明度变量。
}}
}}
{{MatProxyCell|title=ParticleSphereProxy|desc=仅被<code>particle\SmokeStack.vmt</code>使用。Valve备注:"FIXME: 这还有存在的必要吗?"}}
 
{{MatProxyCell|title=PlayerLogo|desc="decals/playerlogo##"贴图的内部代理,为特定玩家生成纹理}}
{{MatProxyCell|title=ParticleSphereProxy|desc=仅用于<code>particle\SmokeStack.vmt</code>(Valve备注:"FIXME: 这个还有用吗?")。}}
{{MatProxyCell|title=Shadow|desc=仅被[[Shadow (shader)|Shadow]]材质使用。无已知参数,用于投影纹理阴影渲染}}
{{MatProxyCell|title=PlayerLogo|desc=内部代理,为"decals/playerlogo##"生成玩家索引纹理。}}
{{MatProxyCell|title=ShadowModel|desc=仅被[[Shadow (shader)|ShadowModel]]材质使用。无已知参数,用于模型投影纹理阴影渲染}}
{{MatProxyCell|title=Shadow|desc=仅用于{{L|Shadow (shader)|阴影着色器}}(无已知参数)。}}
{{MatProxyCell|title=Thermal|desc=利用[[$color]]向量与<code>$ThermalPeriod</code><code>$ThermalMin</code>、<code>$ThermalMax</code>生成色调缩放正弦波。|arguments=
{{MatProxyCell|title=ShadowModel|desc=仅用于{{L|ShadowModel|阴影模型着色器}}(无已知参数)。}}
; <code>[[$color]]</code>
 
: 作为内部引用和输出变量
{{MatProxyCell|title=Thermal|desc=利用<code>$color</code><code>$ThermalPeriod/Min/Max</code>生成色调缩放正弦波。|arguments=
; <code>$color</code>
: 作为输入和输出的颜色变量。
; <code>$ThermalPeriod</code>
; <code>$ThermalPeriod</code>
: 时间周期(默认1.0)
: 周期(默认1.0)。
; <code>$ThermalMin</code>
; <code>$ThermalMin/Max</code>
; <code>$ThermalMax</code>
: 正弦波乘积的上下限。
: 正弦波乘积的最小/最大值约束
}}
}}
{{MatProxyCell|title=ToggleTexture|desc=根据[[SetTextureFrameIndex|游戏代码]]设置的帧数切换纹理(多数游戏仅通过[[env_texturetoggle]]实现)。必须附加到实体。|arguments=
 
{{MatProxyCell|title=ToggleTexture|desc=根据[[SetTextureFrameIndex|游戏代码]]设置的帧数切换纹理(需绑定实体)。|arguments=
; <code>toggleTextureVar</code>
; <code>toggleTextureVar</code>
: 目标纹理变量
: 目标纹理。
; <code>toggleTextureFrameNumVar</code>
; <code>toggleTextureFrameNumVar</code>
: 帧数变量
: 帧数变量。
; <code>toggleShouldWrap</code>
; <code>toggleShouldWrap</code>
: 是否循环(默认启用)
: 是否循环(默认启用)。
}}
}}


== 工具类 ==
== 工具类 ==
{{MatProxyCell|title=Empty|desc=用于注释代理代码块。}}
{{MatProxyCell|title=Dummy|desc=在代理生命周期打印{{ent|developer}}消息。}}


{{MatProxyCell|title=Empty|desc=用于注释禁用代理。用空代理包裹其他代理可使其失效}}
== 其他类 ==
{{MatProxyCell|title=Dummy|desc=在代理创建/初始化/绑定实体/移除时向{{ent|developer}}控制台输出消息}}
{{L4D|since}}
 
{{MatProxyCell|title=ConVar|desc=将变量绑定到客户端控制台变量。|arguments=
== 其他 ==
{{MatProxyCell|title=ConVar {{L4D|since}}|desc=将变量链接到客户端控制台变量。|arguments=
; <code>convar</code>
; <code>convar</code>
: 控制台变量名(如<code>mat_specular</code>){{note|仅支持数值型变量}}
: 控制台变量名(如<code>mat_specular</code>)。
; <code>resultVar</code>
; <code>resultVar</code>
: 返回控制台变量值(向量类型时各分量单独设置)
: 返回数值(向量类型将各分量设为相同值)。
}}
}}


== 游戏特定 ==
== 游戏专属类 ==
 
== 游戏特定内容 ==


=== {{hl2|4}} ===
=== {{hl2|4}} ===
<hr>
<hr>
{{MatProxyCell|title=EntityOriginAlyx|desc=与EntityOrigin相同但X轴偏移15单位。橙盒版最后时刻的临时方案}}
{{MatProxyCell|title=EntityOriginAlyx|desc=与EntityOrigin相同,但X轴偏移15单位。在《橙盒》发布前夕作为临时解决方案创建。}}
{{MatProxyCell|title=Ep1IntroVortRefract|desc=使用<code>$refractamount</code>生成比例值。橙盒版最后时刻的临时方案}}
{{MatProxyCell|title=Ep1IntroVortRefract|desc=使用<code>$refractamount</code>生成比例并传递给相同变量,不使用<code>resultVar</code>。在《橙盒》发布前夕作为临时解决方案创建。}}
{{MatProxyCell|title=VortEmissive|desc=设置<code>$emissiveblendstrength</code>和<code>$detailblendfactor</code>实现EP1开场弗地冈人蓝紫光效}}
{{MatProxyCell|title=VortEmissive|desc=设置<code>$emissiveblendstrength</code>和<code>$detailblendfactor</code>来应用第一章开场中弗地冈人的蓝紫色发光效果。}}
{{MatProxyCell|title=Shield|desc=疑似用于联合军护盾。等效TextureScroll与Alpha代理组合。|arguments=
{{MatProxyCell|title=Shield|desc=可能用于组合护盾类型之一。功能等效于TextureScroll和Alpha代理的组合。|arguments=
; <code>$translucency</code>
; <code>$translucency</code>
: 设置实体渲染透明度
: 该变量设置为关联实体的渲染透明度值,类似于Alpha代理
; <code>textureScrollVar</code>
; <code>textureScrollVar</code>
; <code>textureScrollRate</code>
; <code>textureScrollRate</code>
; <code>textureScrollAngle</code>
; <code>textureScrollAngle</code>
: 功能同TextureScroll代理
: 功能与TextureScroll代理完全相同
}}
}}


==={{tf2|4}}===
==={{tf2|4}}===
<hr>
<hr>
{{MatProxyCell|title=invis|desc=当[[VertexLitGeneric#Cloak|$cloakPassEnabled]]启用时生效。支持世界/视角模型,无队伍色支持}}
{{MatProxyCell|title=invis|desc=当[[VertexLitGeneric#Cloak|$cloakPassEnabled]]为true时生效。支持世界模型和视图模型,但不支持队伍颜色。}}
{{MatProxyCell|title=spy_invis|desc=当$cloakPassEnabled启用时生效。用于玩家世界模型材质。无参数。默认队伍色,与$weapon_invis、$vm_invis不兼容}}
{{MatProxyCell|title=spy_invis|desc=当$cloakPassEnabled为true时生效。用于玩家世界模型材质。无参数。默认玩家隐身颜色为队伍色。与$weapon_invis和$vm_invis不兼容。}}
{{MatProxyCell|title=weapon_invis|desc=当$cloakPassEnabled启用时生效。用于武器世界模型材质。无参数。与$spy_invis、$vm_invis不兼容}}
{{MatProxyCell|title=weapon_invis|desc=当$cloakPassEnabled为true时生效。用于武器世界模型材质。无参数。与$spy_invis和$vm_invis不兼容。}}
{{MatProxyCell|title=vm_invis|desc=当$cloakPassEnabled启用时生效。用于玩家/武器视角模型材质。无参数。与$spy_invis、$weapon_invis不兼容}}
{{MatProxyCell|title=vm_invis|desc=当$cloakPassEnabled为true时生效。用于玩家和武器视图模型材质。无参数。与$spy_invis和$weapon_invis不兼容。}}
{{MatProxyCell|title=building_invis|desc=未使用,原计划用于建筑模型隐身效果}}
{{MatProxyCell|title=building_invis|desc=未使用,计划用于建筑模型材质以实现隐身支持。}}
{{MatProxyCell|title=CommunityWeapon|desc=当物品标记为[https://wiki.teamfortress.com/wiki/Community_(quality) 社区品质]时返回1。|arguments=
{{MatProxyCell|title=CommunityWeapon|desc=当物品标记为[https://wiki.teamfortress.com/wiki/Community_(quality) 社区品质]时传递值1,否则传递0。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=InvulnLevel|desc=设置玩家处于[https://wiki.teamfortress.com/wiki/ÜberCharge 无敌状态]时的效果透明度。|arguments=
{{MatProxyCell|title=InvulnLevel|desc=传递浮点值设置玩家被[https://wiki.teamfortress.com/wiki/ÜberCharge 超级冲锋]时的无敌效果透明度。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=BurnLevel|desc=设置玩家着火时的火焰覆盖层透明度。|arguments=
{{MatProxyCell|title=BurnLevel|desc=传递浮点值设置玩家着火时的火焰覆盖效果透明度。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=YellowLevel|desc=当玩家被[https://wiki.teamfortress.com/wiki/Jarate 罐装尿击]中时返回RGB值。|arguments=
{{MatProxyCell|title=YellowLevel|desc=当玩家被[https://wiki.teamfortress.com/wiki/Jarate 罐装小便]击中时传递RGB值。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=ModelGlowColor|desc=激活时返回硬编码颜色实现[https://wiki.teamfortress.com/wiki/Critical_hits#Special_cases 暴击]光效。未激活时返回纯白。|arguments=
{{MatProxyCell|title=ModelGlowColor|desc=激活时传递硬编码颜色值以创建[https://wiki.teamfortress.com/wiki/Critical_hits#Special_cases 暴击]发光效果。颜色为红色或蓝色。未激活时为纯白(255 255 255)。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=ItemTintColor|desc=当使用[https://wiki.teamfortress.com/wiki/Paint 喷漆]时返回对应RGB值,未使用时返回0。|arguments=
{{MatProxyCell|title=ItemTintColor|desc=当使用[https://wiki.teamfortress.com/wiki/Paint 喷漆罐]时传递RGB值。数值对应喷漆颜色。未使用时传递0。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=BuildingRescueLevel|desc=返回[https://wiki.teamfortress.com/wiki/Rescue_Ranger 救援者步枪]显示屏振幅变换矩阵。|arguments=
{{MatProxyCell|title=BuildingRescueLevel|desc=传递变换矩阵设置[https://wiki.teamfortress.com/wiki/Rescue_Ranger 救援步枪]显示屏的振幅。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=TeamTexture|desc=根据队伍切换纹理动画帧。|arguments=
{{MatProxyCell|title=TeamTexture|desc=根据当前队伍改变纹理的动画帧。|arguments=
; <code>resultVar</code> - 仅写入<code>$frame</code>
; <code>resultVar</code> - 仅写入<code>$frame</code>
}}
}}
{{MatProxyCell|title=AnimatedWeaponSheen|desc=执行[https://wiki.teamfortress.com/wiki/Killstreak_Kit#Specialized_Killstreak_Kit 连杀特效光晕]|arguments=
{{MatProxyCell|title=AnimatedWeaponSheen|desc=执行[https://wiki.teamfortress.com/wiki/Killstreak_Kit#Specialized_Killstreak_Kit 击杀特效流光效果]|arguments=
; <code>animatedtexturevar</code>
; <code>animatedtexturevar</code>
; <code>animatedtextureframenumvar</code>
; <code>animatedtextureframenumvar</code>
; <code>animatedtextureframerate</code>
; <code>animatedtextureframerate</code>
}}
}}
{{MatProxyCell|title=WeaponSkin|desc=为装饰物品设置基底纹理}}
{{MatProxyCell|title=WeaponSkin|desc=为装饰物品设置基础纹理。}}
{{MatProxyCell|title=ShieldFalloff|desc=控制[https://wiki.teamfortress.com/wiki/Vaccinator 疫苗枪]护盾脉冲效果}}
{{MatProxyCell|title=ShieldFalloff|desc=脉冲[https://wiki.teamfortress.com/wiki/Vaccinator 疫苗注射器]的超级护盾。}}
{{MatProxyCell|title=StatTrakIllum|desc=在视角模型上返回0.75。|arguments=
{{MatProxyCell|title=StatTrakIllum|desc=在视图模型上返回0.75。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=StatTrakDigit|desc=返回物品[https://wiki.teamfortress.com/wiki/Strange_quality 奇异属性]计数器的某一位数字。|arguments=
{{MatProxyCell|title=StatTrakDigit|desc=返回物品奇异计数器的单个数字。如果trimZeros为正值,前导零将返回10。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
; <code>displayDigit</code>
; <code>displayDigit</code>
; <code>trimZeros</code>
; <code>trimZeros</code>
}}
}}
{{MatProxyCell|title=StatTrakIcon|desc=无效。返回常量矩阵。|arguments=
{{MatProxyCell|title=StatTrakIcon|desc=无功能。返回常量矩阵。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=StickybombGlowColor|desc=激活时返回硬编码颜色实现[https://wiki.teamfortress.com/wiki/Scottish_Resistance 苏格兰防御]选择效果。|arguments=
{{MatProxyCell|title=StickybombGlowColor|desc=激活时传递硬编码颜色值以创建'[https://wiki.teamfortress.com/wiki/Scottish_Resistance 苏格兰防御]'选择效果。颜色为红色或蓝色。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=SniperRifleCharge|desc=返回[https://wiki.teamfortress.com/wiki/Sniper_Rifle 狙击步枪]充能变换矩阵。近战武器等会影响返回值。|arguments=
{{MatProxyCell|title=SniperRifleCharge|desc=[https://wiki.teamfortress.com/wiki/Sniper_Rifle 狙击步枪]蓄力返回变换矩阵。近战武器和医疗枪等其他武器会影响返回值。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=Heartbeat|desc=返回0.48-0.6间的波动值模拟心跳。|arguments=
{{MatProxyCell|title=Heartbeat|desc=返回0.48至0.6之间(多数为0.6)的时变值模拟心跳。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=WheatlyEyeGlow|desc=生成高斯分布脉冲颜色。用于[https://wiki.teamfortress.com/wiki/Ap-Sap Ap-Sap]物品。|arguments=
{{MatProxyCell|title=WheatlyEyeGlow|desc=使用高斯分布脉冲颜色。用于[https://wiki.teamfortress.com/wiki/Ap-Sap Ap-Sap]物品。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=BenefactorLevel|desc=根据[https://wiki.teamfortress.com/wiki/Secret_Saxton 礼物]赠送数量缩放心跳效果。|arguments=
{{MatProxyCell|title=BenefactorLevel|desc=根据玩家赠送的[https://wiki.teamfortress.com/wiki/Secret_Saxton 礼物]数量缩放心跳。返回纹理比例因子,1为最大尺寸(大慈善家),赠送礼物越少因子越大。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
Line 446: Line 485:
=== {{l4d2|4}} ===
=== {{l4d2|4}} ===
<hr>
<hr>
{{MatProxyCell|title=PlayerTeam|desc=根据玩家当前队伍返回不同值。|arguments=
{{MatProxyCell|title=PlayerTeam|desc=根据玩家当前所在队伍返回对应值。|arguments=
; <code>team</code>
; <code>team</code>
: 未知
: 未知
; <code>resultVar</code>
; <code>resultVar</code>
: 0=幸存者 / 1=感染者 / 2=观察者
: 0 = 生存者 / 1 = 感染者 / 2 = 观察者
}}
}}
{{MatProxyCell|title=BloodyHands|desc=根据近战攻击命中次数返回0-1值。|arguments=
{{MatProxyCell|title=BloodyHands|desc=根据近战武器命中次数返回0到1之间的值。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 命中次数/5(最大值1)
: 命中次数 / 5
: 世界/视角模型共享该值
: 5次命中后不超过1
: 世界模型和视图模型共享该值
}}
}}
{{MatProxyCell|title=IT|desc=返回幸存者被Boomer胆汁覆盖程度。|arguments=
{{MatProxyCell|title=IT|desc=根据生存者是否被Boomer胆汁覆盖返回0到1之间的值。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 1=完全覆盖 / 0=未覆盖
: 1 = 完全覆盖 / 0 = 未覆盖  
}}
}}
{{MatProxyCell|title=BurnLevel|desc=设置感染者燃烧时的火焰覆盖层透明度。|arguments=
{{MatProxyCell|title=BurnLevel|desc=传递浮点值设置感染者燃烧时的火焰覆盖效果透明度。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 1=燃烧中 / 0=未燃烧
: 1 = 着火 / 0 = 未着火
}}
}}
{{MatProxyCell|title=BBQLevel|desc=见于<code>materials\models\infected\hulk\hulk_01.vmt</code>|arguments=
{{MatProxyCell|title=BBQLevel|desc=见于<code>materials\models\infected\hulk\hulk_01.vmt</code>|arguments=
Line 471: Line 511:
==={{as|4}}===
==={{as|4}}===
<hr>
<hr>
{{MatProxyCell|title=NightVisionSelfIllum|desc=根据夜视仪或狙击镜激活状态调整自发光强度。|arguments=
{{MatProxyCell|title=NightVisionSelfIllum|desc=当玩家启用夜视效果或狙击镜时,输出强度值调节物体自发光。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 通常设为<code>$selfillumtint</code>
: 要修改的变量,通常设置为<code>$selfillumtint</code>
; <code>asw_night_vision_self_illum_multiplier</code>
; <code>asw_night_vision_self_illum_multiplier</code>
: 夜视全效时输出值
: 该ConVar指定夜视全开时的输出值
; <code>asw_sniper_scope_self_illum_multiplier</code>
; <code>asw_sniper_scope_self_illum_multiplier</code>
: 狙击镜激活时输出值
: 该ConVar指定狙击镜激活时的输出值
}}
}}
{{MatProxyCell|title=AlienSurfaceFX|desc=设置[[$detail]]纹理及参数显示火焰/冰冻/电击效果。|arguments=
{{MatProxyCell|title=AlienSurfaceFX|desc=设置[[$detail]]纹理及参数以显示火焰、冻结和电击效果。|arguments=
; <code>texturescrollvar</code>
; <code>texturescrollvar</code>
: 通常设为<code>$detailtexturetransform</code>
: 设置为控制细节纹理位移的矩阵或变换变量名,通常为<code>$detailtexturetransform</code>
}}
}}
{{MatProxyCell|title=LanguagePreference|desc={{asrd|only}} 根据客户端语言设置变量。|arguments=
{{MatProxyCell|title=LanguagePreference|desc={{asrd|only}} 根据客户端语言设置设定值。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 目标变量(如<code>$basetexture</code>)
: 要修改的变量(如<code>$basetexture</code>)
; <code>default</code>
; <code>default</code>
: 默认值
: 无匹配语言时的默认值
; <code>english</code>, <code>french</code>, <code>schinese</code>等
; <code>english</code>, <code>french</code>, <code>schinese</code>等
: 各语言特定值
: 特定语言的对应值
}}
}}


==={{portal|4}}{{portal2|4}}===
==={{portal|4}} {{portal2|4}}===
<hr>
<hr>
{{MatProxyCell|title=PortalOpenAmount|desc=在传送门上返回0-1开启进度。|arguments=
{{MatProxyCell|title=PortalOpenAmount|desc=在传送门上,随传送门开启从0过渡到1。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=PortalStatic|desc=在传送门上指定静态不透明效果强度。|arguments=
{{MatProxyCell|title=PortalStatic|desc=在传送门上,指定不透明静态效果的渲染强度。1表示未配对的传送门,0表示已开启的传送门。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 1=未配对传送门 / 0=开启状态
}}
}}


==={{portal2|4}} 专属===
==={{portal2|4}} 独有===
<hr>
<hr>
{{MatProxyCell|title=FizzlerVortex|desc=为[[SolidEnergy]]着色器设置[[Fizzler|力场]]效果参数。|arguments=
{{MatProxyCell|title=FizzlerVortex|desc=为[[SolidEnergy]]着色器设置[[Fizzler|力场]]效果的各种参数——附近物体位置、传送门射击闪光和能量过渡时间。无参数。|arguments=
; <code>$powerup</code>
; <code>$powerup</code>
: 0=关闭 / 1=开启
: 力场关闭时过渡到0,开启时过渡到1
; <code>$FLOW_VORTEX1</code>
; <code>$FLOW_VORTEX1</code>
: 1=附近存在物体
: 有物体靠近力场时设为1,否则为0
; <code>$FLOW_VORTEX_POS1</code>
; <code>$FLOW_VORTEX_POS1</code>
: 首个物体位置
: 设为第一个物体的位置
; <code>$FLOW_VORTEX2</code>
; <code>$FLOW_VORTEX2</code>
: 1=存在第二物体
: 有第二个物体靠近力场时设为1,否则为0
; <code>$FLOW_VORTEX_POS2</code>
; <code>$FLOW_VORTEX_POS2</code>
: 第二物体位置
: 设为第二个物体的位置
{{todo|传送射击闪光设置哪个参数?}}
{{todo|传送门射击闪光设置哪个参数?}}
}}
}}
{{MatProxyCell|title=WheatlyEyeGlow|desc=疑似控制Wheatley发光效果。未实际使用。<br>{{todo|是否有效?似乎已被Lightedmouth取代}}
{{MatProxyCell|title=WheatlyEyeGlow|desc=推测用于控制Wheatley的发光效果。实际未使用。<br>{{todo|该代理是否有效?似乎已被Lightedmouth取代}}
}}
}}
{{MatProxyCell|title=Lightedmouth|desc=用于[[npc_personality_core|人格核心]]同步场景眼灯闪烁。视角模型可通过VScript手动控制。|arguments=
{{MatProxyCell|title=Lightedmouth|desc=用于各种[[npc_personality_core|人格核心]]和PoTaTOS,使其眼部灯光与过场动画同步闪烁。空闲时仍保持部分亮度。在视图模型上也可通过VScript手动控制使GLaDOS显示关闭状态。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 传递给<code>$selfillumtint</code>的色调
: 传递给<code>$selfillumtint</code>的颜色值
}}
}}
{{MatProxyCell|title=LightedFloorButton|desc=用于干净版超级按钮材质,设置{{ent|prop_floor_button}}实体的自发光。|arguments=
{{MatProxyCell|title=LightedFloorButton|desc=用于清洁版超级按钮材质,当材质用于{{ent|prop_floor_button}}时设置$selfillumtint为1,否则设为0。此功能无实际益处且会导致其他实体显示异常,推测为测试版残留。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 非按钮实体时设为<code>[0 0 0]</code>
: 使用的颜色值,非按钮时为<code>[0 0 0]</code>
}}
}}
{{MatProxyCell|title=TractorBeam|desc=用于[[prop_tractor_beam|远距牵引束]]效果材质。|arguments=
{{MatProxyCell|title=TractorBeam|desc=用于[[prop_tractor_beam|牵引光束]]效果材质,输出滚动速率并执行其他未知操作。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 传递给TextureScroll代理的速率参数
: 传递给多个TextureScroll代理的<code>textureScrollRate</code>参数
}}
}}


Line 547: Line 586:
==={{csgo|4}}===
==={{csgo|4}}===
<hr>
<hr>
{{MatProxyCell|title=Select|desc=根据输入值选择输出,类似[[w:Switch statement|switch语句]]。|arguments=
{{MatProxyCell|title=Select|desc=根据输入值选择结果值,类似[[w:Switch statement|switch语句]]。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>resultVar</code>
; <code>resultVar</code>
; <code>default</code>
; <code>default</code>
: 默认返回值
: 当<code>srcVar1</code>不匹配任何case时的默认返回值
; ''<code><case></code>''
; ''<code><case></code>''
: 匹配值对应返回。支持多条件
: 当<code>srcVar1</code>等于<code><case></code>时的返回值。可设置多个case''
示例(<code>materials/models/inventory_items/dogtags/dogtags_lightray.vmt</code>):
''示例来自<code>materials/models/inventory_items/dogtags/dogtags_lightray.vmt</code>
<pre style="background:#444; color:#eeeeee; border-color:#666">
<pre style="background:#444; color:#eeeeee; border-color:#666">
"srcVar1"  "$localTeamNumber"
"srcVar1"  "$localTeamNumber"
Line 562: Line 601:
"3"        "[0.269 0.474 0.680]"
"3"        "[0.269 0.474 0.680]"
</pre>
</pre>
{{todo|支持其他类型?其他游戏?}}
{{todo|是否支持其他case类型?其他游戏是否适用?}}
}}
}}
{{MatProxyCell|title=GetTeamNumber|desc=获取实体队伍编号。|arguments=
{{MatProxyCell|title=GetTeamNumber|desc=获取实体队伍。见于<code>materials/models/inventory_items/dogtags/dogtags_lightray.vmt</code>。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
:*0: 未分配
:*0: 未分配
Line 570: Line 609:
:*2: 恐怖分子
:*2: 恐怖分子
:*3: 反恐精英
:*3: 反恐精英
{{todo|其他游戏?}}
{{todo|其他游戏是否适用?}}
}}
}}
{{MatProxyCell|title=survivalteammate|desc={{csgo mode|Dz}}中标记队友。|arguments=
{{MatProxyCell|title=survivalteammate|desc=用于在{{csgo mode|Dz}}中绘制队友。见于<code>materials/models/player/custom_player/econ/body/tm_jumpsuit/jumpsuit_body.vmt</code>。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 是队友返回1,否则0{{note|非危险区域模式始终返回0}}
: 当本地玩家是材质应用对象的队友时返回1,否则返回0{{note|在危险区域外始终返回0——请改用GetTeamNumber!}}
}}
}}
{{MatProxyCell|title=RemapValClamp|desc=数值范围重映射。|arguments=
{{MatProxyCell|title=RemapValClamp|desc=在指定范围内重新映射变量。|arguments=
; <code>range_in_min</code>
; <code>range_in_min</code>
; <code>range_in_max</code>
; <code>range_in_max</code>
Line 584: Line 623:
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=Modulo|desc=取模运算。|arguments=
{{MatProxyCell|title=Modulo|desc=将第一个变量除以第二个变量并将余数写入结果变量。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=MoneyProxy|desc=读取玩家金钱值。仅限视角模型材质。|arguments=
{{MatProxyCell|title=MoneyProxy|desc=读取玩家金钱值。仅在视图模型材质生效。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
}}
}}
{{MatProxyCell|title=WeaponLabelText|desc=根据显示数字计算基底纹理偏移。仅限视角模型。|arguments=
{{MatProxyCell|title=WeaponLabelText|desc=根据displaydigit值计算$basetexture的偏移位置。仅在视图模型生效。|arguments=
; <code>displaydigit</code>
; <code>displaydigit</code>
}}
}}
Line 598: Line 637:
; <code>resultvar</code>
; <code>resultvar</code>
}}
}}
{{MatProxyCell|title=IronSightAmount|desc=返回瞄准状态。|arguments=
{{MatProxyCell|title=IronSightAmount|desc=玩家开镜时返回1,收镜时返回0。|arguments=
; <code>invert</code>
; <code>invert</code>
; <code>resultvar</code>
; <code>resultvar</code>
}}
}}
{{MatProxyCell|title=ApproachValue|desc=平滑过渡数值。|arguments=
{{MatProxyCell|title=ApproachValue|desc=对srcVar1当前值到srcVar2目标值进行平滑过渡。|arguments=
; <code>srcVar1</code>
; <code>srcVar1</code>
; <code>srcVar2</code>
; <code>srcVar2</code>
; <code>speed</code>
; <code>speed</code>
: 过渡速度
: 指定过渡速度,值越大过渡越快
; <code>resultVar</code>
: 过渡结果存储在此变量
}}
 
==={{titanfall|4}} 与 {{titanfall2|4}}===
<hr>
{{MatProxyCell|title=ADSFraction|desc=根据玩家瞄准程度返回0到1之间的值。|arguments=
; <code>use_weapon_settings</code>
: 若设置,使用武器的<code>zoom_scope_frac_start</code>和<code>zoom_scope_frac_end</code>设置
; <code>startFrac</code>
; <code>endFrac</code>
; <code>invert</code>
; <code>spline</code>
; <code>scale</code>
; <code>resultVar</code>
}}
{{MatProxyCell|title=ADSFOVTarget|arguments=
; <code>range</code>
; <code>invert</code>
; <code>resultVar</code>
}}
{{MatProxyCell|title=BackgroundAmmoColor|desc=根据玩家武器当前弹匣传递RGB值。颜色从蓝->橙->红渐变。|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=ClipAmmo|desc=返回玩家当前武器的弹匣剩余弹药量。|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=ClipAmmoColor|desc=类似<code>BackgroundAmmoColor</code>,但数值变化阈值不同。|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=CockpitLights
}}
{{MatProxyCell|title=CockpitOpenAmount
}}
{{MatProxyCell|title=CockpitScreen
}}
{{MatProxyCell|title=EntityScript|desc=调用VScript函数并返回值。|arguments=
; <code>scriptFuncName</code>
; <code>resultVar</code>
}}
{{MatProxyCell|title=Holosight|desc=类似<code>ADSFraction</code>,但似乎没有配置选项。|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=HoloSightOffset|desc=基于UV中心相对于二维矢量$attachment位置的基准偏移量。|arguments=
; <code>attachmentName</code>
; <code>horizontalScalar</code>
; <code>verticalScalar</code>
; <code>resultVar</code>
''示例来自<code>materials/models/weapons/attachments/hcog_reticle_front.vmt</code>:
<pre style="background:#444; color:#eeeeee; border-color:#666">
"attachmentName"  "HCOG_REAR"
"horizontalScalar" "0.55"
"verticalScalar"  "-0.72"
"resultVar"        "$holoOffset"
</pre>
}}
{{MatProxyCell|title=MaxCarryAmmo|desc=返回玩家当前武器的最大后备弹药容量。|arguments=
; <code>resultVar</code>
{{bug|若武器不使用弹匣则失效|tested=Titanfall 2}}
}}
{{MatProxyCell|title=MaxClipAmmo|desc=返回玩家当前武器的最大弹匣容量。|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=MiniMap|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=NumericCounterAtlasFrame|arguments=
; <code>value</code>
; <code>digitIndex</code>
; <code>resultAtlasFrameIndexVar</code>
}}
{{MatProxyCell|title=ProgressBar|arguments=
; <code>value</code>
; <code>max</code>
; <code>resultVar</code>
: 结果为变换矩阵。
}}
{{MatProxyCell|title=RemainingAmmo|desc=返回玩家当前武器的后备剩余弹药量。|arguments=
; <code>resultVar</code>
{{bug|若武器不使用弹匣则失效|tested=Titanfall 2}}
}}
{{MatProxyCell|title=RemainingAmmoColor|desc=类似<code>BackgroundAmmoColor</code>,但使用武器的后备弹药量。|arguments=
; <code>resultVar</code>
{{bug|若武器不使用弹匣则失效|tested=Titanfall 2}}
}}
{{MatProxyCell|title=RemainingClipCount|desc=返回玩家当前武器的最大后备弹药量除以最大弹匣容量。|arguments=
; <code>resultVar</code>
}}
{{MatProxyCell|title=ScriptModify|desc=调用VScript函数并返回值。|arguments=
; <code>scriptFuncName</code>
; <code>resultVar</code>
''示例来自<code>materials/vgui/hud/compass_ticker.vmt</code>:
<pre style="background:#444; color:#eeeeee; border-color:#666">
"scriptFuncName" "VMTCallback_CompassTickerOffset"
"resultVar" "$offset"
</pre>
{{confirm|与<code>EntityScript</code>功能相同?}}
}}
{{MatProxyCell|title=TextureAtlas|arguments=
; <code>frameSize</code>
; <code>frameStart</code>
; <code>resultVar</code>
}}
{{MatProxyCell|title=TickCounterAtlasFrames|arguments=
; <code>tickCount</code>
; <code>rowLength</code>
; <code>rowIndex</code>
; <code>atlasFrameSize</code>
; <code>resultAtlasFrameStartVar</code>
; <code>resultAtlasFrameCountVar</code>
}}
{{MatProxyCell|title=WeaponChargeFraction|desc=根据玩家当前武器的充能程度返回0到1之间的值。|arguments=
; <code>resultVar</code>
; <code>resultVar</code>
: 过渡结果
}}
}}


== 另见 ==
== 另请参阅 ==


* [[Material Proxies|材质代理]]
* {{L|Material Proxies|材质代理}}
* [[Material Creation|材质创建]]
* {{L|Material Creation|材质创建}}


{{ACategory|Material System}}
{{ACategory|Material System}}
{{ACategory|Lists}}
{{ACategory|Lists}}

Revision as of 04:05, 28 April 2025

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)
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)中使用该代理的实体穿过传送门时会导致崩溃。  [todo tested in ?]

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

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

{{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 根据游戏代码设置的帧数切换纹理(需绑定实体)。

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

另请参阅