$alphatest
< Zh
		
		
		
		Jump to navigation
		Jump to search
		$alphatest是一个着色器参数,可在所有的  起源 游戏中使用。 该参数指定用于确定二元不透明度的遮罩。白色表示完全不透明,黑色表示完全透明。介于两者之间的值会被四舍五入为0或1,除非同时使用
 起源 游戏中使用。 该参数指定用于确定二元不透明度的遮罩。白色表示完全不透明,黑色表示完全透明。介于两者之间的值会被四舍五入为0或1,除非同时使用$allowalphatocoverage。此效果类似于$translucent,区别在于它不能呈现半透明状态(否则会出现 色带),渲染速度更快,且引擎在分层时总能正确排序(而不仅限于非detail的worldspawn)。
 色带),渲染速度更快,且引擎在分层时总能正确排序(而不仅限于非detail的worldspawn)。
语法
VMT示例
附加参数
{{MatParam|$alphatestreference|nolink=1|float|指定表面应变为透明而非不透明的alpha通道阈值。值"0.3"会创建较厚的形状,而"0.7"会创建较薄的形状。
|  重要:反直觉的是,此参数默认值并非"0.5"。LightmappedGeneric、UnlitGeneric和VertexLitGeneric都默认为"0.7"。为避免意外结果,应始终设置此参数。  错误:使用代理实时更新 $alphatestreference仅影响投射阴影(如手电筒)。 提示:可通过使用$alphatestreference 1并改为修改 $alpha值来绕过此限制。(需要将$alpha提高到1以上,可能引起排序问题) 提示:对于模型上的VertexLitGeneric,可使用 $detail配合$detailblendmode 3并修改$detailblendfactor值。细节纹理必须是带有不同alpha通道的$basetexture副本。 | 
{{MatParam|$allowalphatocoverage|nolink=1|bool|基于alpha值创建半透明阶梯。可用于柔化边缘,并大幅减少远距离观看时的闪烁。
虽然不明显,但$alphatestreference仍在使用此命令时用于控制投射阴影遮罩、客户端禁用MSAA时及Hammer中(此处$allowalphatocoverage无效)。
|  警告:必须启用MSAA才能生效。 阶梯的粒度取决于选择的MSAA倍数;2x MSAA比8x MSAA具有更少的半透明阶梯。  注意:在8x MSAA下(测试于2)有7个半透明阶梯。(若包含完全不透明和完全透明则为9个) 阶梯大致分布如下: 待完善: 为此制作表格。考虑其他MSAA级别。半透明阶梯数总是比MSAA采样数少1(若包含完全透明和完全不透明则多1)。  提示:Alpha to coverage最适合锐利的高分辨率alpha通道,这能减轻因标准着色器在放大alpha to coverage纹理时缺乏锐化而固有的色带伪影。 | 
对比
| $translucent | $alphatest | 
|---|---|
注意右侧具有锐利alpha通道的圆环几乎无变化。




























