BA通訊中著色器
朋友問的簡單給實(shí)現(xiàn)了一下,沒優(yōu)化。
要點(diǎn)有:Blend(兩個Pass的混合算法)、 _Time(內(nèi)部維護(hù)的一個時間值)和_MainTex_TexelSize(紋素)
圖片要求:
1.主圖像在Sprite導(dǎo)入中設(shè)置圖像渲染為Tight,這樣什么不用寫橫線也只會在非透明區(qū)域顯示。如果是FullRect,那么透明度不能直接指定,而應(yīng)該取樣主紋理透明度(=0 | 1)乘期望的值。
2.主圖片的左右邊界上不能有不透明像素,本著色器涉及一些像素水平移動,這樣避免一些額外處理。
3.遮罩線段紋理最上和最下不能是一種顏色,下面的示例就有根大黑條……

1.Properties
主紋理:圖片本身
遮罩紋理:豎著往下走的那些橫杠,像素與主紋理相同
調(diào)整色調(diào):調(diào)整圖標(biāo)本身顏色
2.SubShader
透明渲染 透明通道
設(shè)置兩個Pass為透明度混合
3.Pass1 改色
4.Pass 1通訊噪聲
??? Shader中盡可能不要出現(xiàn)if,哪怕是定值已經(jīng)不會造成什么性能影響,這里單純是沒改。
??? 1) %10 > 0 這條if提供了發(fā)生擾動的大前提
??? 2) _Time.y % 1 < 0.3 && _Time.y % 1 > 0.2 定義擾動發(fā)生的時刻與時長
??? 3) floor(i.uv.y / _MainTex_TexelSize.y) 得出像素的行號
??? 4) %11 > 5 功能如注釋
??? 5) else if單純增加表現(xiàn)
5.Pass2 豎著走的橫線
標(biāo)簽: