两种方式的透明
在这篇文章里面提到,透明有两种方式,一种被称作Alpha Test方式,另一种是Alpha Blending方式。
Alpha Test方式会在Fragment阶段根据Alpha值进行比较,不满足条件的片段会被直接Pass掉。这种处理方式要么透明要么不透明,比较决绝,不能实现半透明效果,并且在移动端会有比较严重的性能问题,个人认为唯一的好处是不会写入深度缓冲区(可以认为那些片段从来没有存在过),因此不会出现渲染顺序错乱问题。
Alpha Blending则是用Blend语法,通过片段的alpha值和颜色缓冲区里的alpha值运算实现透明。由于缓冲区颜色和当前片段颜色信息都在,因此可以实现半透明效果,但是如果使用的时候没有ZWrite Off,如果出现当前片段深度比缓冲区深度还深,会导致看不到后面物体的问题。
Alpha Test方式
Shader "Custom/CutOff" {
Properties {
_MainTex ("Base (RGB)", 2D) =