【风宇冲】Unity3D教程宝典之Shader篇:第十二讲 Alpha测试

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院


                        Shader第十二讲 Alpha测试

引言:本讲和下一讲主要讲Alpha即透明通道有关的内容。RGBA,其中最终在屏幕上显示的只有RGB即红绿蓝组成的颜色,Alpha并没有任何颜色显示。A只是辅助颜色运算特别是多图层运算而已。例如在单图层的情况下(1,1,1,0.8)输出的是(1,1,1)*0.8即浅灰色(0.8,0.8,0.8),和(0.8,0.8,0.8)是等价的.但是假如不再是单图层而背景为绿色(0,1,0,1)的时候,(0.8,0.8,0.8)就不知道怎么去运算了,而(1,1,1,0.8)知道。看不懂这段引言?没关系,往下看,当学完第五讲和第六讲后再回来看就自然能深刻理解了。

什么是通道:
通道是8位的灰度图像,能够显示256种灰度,用来表示颜色的RGBA值。R=Red红色,G=Green绿色,B=blue蓝色,A=alhpa透明值, 其中RGB为原色通道,A为透明通道。
在通道中,以白色代替透明表示要处理的部分(选择区域);以黑色表示不需处理的部分(非选择区域)
所有通道取值范围是 [0,255], 但是在Shader里取值范围是[0,1], 0和1分辨对应0和255
什么是Alpha通道:
定义:一般图形卡具有32位总线,附加的8位信号就被用来保存不可见的透明度信号以方便处理用,这就是Alpha通道。白色的alpha象素用以定义不透明的彩色象素,而黑色的alpha象素用以定义透明象素,黑白之间的灰阶用来定义半透明象素。
简而言之:Alpha通道取值同样为[0,255] 以及Shader[0,1], 值越小最透明,值最大越不透明。在Shader里即0为透明,什么都没有,编辑器显示为黑色。1则不透明,全部都显示,编辑器其显示为白色如下图。
【风宇冲】Unity3D教程宝典之Shader篇:第十二讲 <wbr>Alpha测试

什么是Alpha Test
Alpha Test ,中文就是透明度测试。简而言之就是V&F shader中最后fragment函数输出的该点颜色值(即上一讲frag的输出half4)的alpha值与固定值进行比较。 AlphaTest语句通常位于Pass{}中的起始位置。

语法:
第一种: AlphaTest Off: 不测试,全渲染
第二种:Alpha 比较符 目标alpha值
其中目标alpha值取值范围是 0至1, 也可以用参数 ,如 AlphaTest [varName]。

比较符:(目标alpha值下面记作x)
Always  全渲染(任意x值)
Never   全不渲染
Greater  点的alpha值大于x时渲染
GEuqal   点的alpha值大于等于x时渲染
Less       点的alpha值小于x时渲染
LEqual    点的alpha值小于等于x时渲染
Equal    点的alpha值等于x时渲染
NotEqual  点的alpha值不等于x时渲染

例:
AlphaTest never   0       全不渲染(这个0可以是任意值,但必须填)
AlphaTest always 0       全渲染(这个0可以是任意值,但必须填)
AlphaTest off               全渲染
AlphaTest Greater 0.4   当alpha大于0.4渲染,   缺点是边缘过于锋利并且显示不完整,alpha小于0.4的部分被忽略掉了
Alpha Blend                 边缘柔和,但是中心也太柔和,没有实体的感觉
AlphaTest Greater 0.4 / AlphaTest LEqual 0.4 两个部分,大于0.4不混合,小于0.4混合。效果是既有实体感觉,边缘也柔和。
【风宇冲】Unity3D教程宝典之Shader篇:第十二讲 <wbr>Alpha测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值