欢迎光临散文网 会员登陆 & 注册

BA通讯中着色器

2023-05-25 13:59 作者:莫末陌寞  | 我要投稿

朋友问的简单给实现了一下,没优化。
要点有:Blend(两个Pass的混合算法)、 _Time(内部维护的一个时间值)和_MainTex_TexelSize(纹素)
图片要求:
1.主图像在Sprite导入中设置图像渲染为Tight,这样什么不用写横线也只会在非透明区域显示。如果是FullRect,那么透明度不能直接指定,而应该取样主纹理透明度(=0 | 1)乘期望的值。
2.主图片的左右边界上不能有不透明像素,本着色器涉及一些像素水平移动,这样避免一些额外处理。
3.遮罩线段纹理最上和最下不能是一种颜色,下面的示例就有根大黑条……

1.Properties
主纹理:图片本身
遮罩纹理:竖着往下走的那些横杠,像素与主纹理相同
调整色调:调整图标本身颜色

2.SubShader
透明渲染 透明通道
设置两个Pass为透明度混合

3.Pass1 改色

4.Pass 1通讯噪声
    Shader中尽可能不要出现if,哪怕是定值已经不会造成什么性能影响,这里单纯是没改。
    1) %10 > 0 这条if提供了发生扰动的大前提
    2) _Time.y % 1 < 0.3 && _Time.y % 1 > 0.2 定义扰动发生的时刻与时长
    3) floor(i.uv.y / _MainTex_TexelSize.y) 得出像素的行号
    4) %11 > 5 功能如注释
    5) else if单纯增加表现

5.Pass2 竖着走的横线


BA通讯中着色器的评论 (共 条)

分享到微博请遵守国家法律