作用:
淡入淡出操作, 根据淡出程度unity_LODFade和屏幕坐标来对抖动贴图进行采样,并裁剪掉的透明度低于0.5的片元,从而实现半透明
源码:
unity_LODFade :https://blog.csdn.net/zengjunjie59/article/details/114295455
unity_LODFade.y一共有十六个取值: 0/16, 1/16 .... 15/16 的值
frac函数的作用:取一个数字的小数部分,例如frac(1.23) = 0.23
_DitherMaskLOD2D:
这是一个4 X 64 的抖动贴图。如下(随手画的,并不是真的):
第一行:vpos /= 4;
vpos是屏幕坐标,x取值范围是[0, width], y取值范围是[0, height] , x和y都是整数,这里除以4是为了转换成小数,作为UV的时候,让每个片元分别对应抖动贴图上的像素点。即当x为1的时候取的是uv.x为0.25的像素,x为2时取uv.x为0.5的像素
第二行:vpos.y = farc(vpos.y) * 0.0625 + unity_LODFade.y
unity_LODFade.y代表淡出程度。这里的0.0625就是1/16,farc(vpos.y)的取值只有四种(0,0.25,0.5,0.75), 刚好分成了4 X 16份,对应抖动贴图的高(64)
第三行:clip(tex2D(_DitherMaskLOD2D, vpos).a - 0.5);
裁剪掉采样出来透明度低于0.5的片元