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