原理
将彩色图片映射到灰度的的一个过程,我们一般使用的颜色值一般rgb32位每个八位的,在Shader里面颜色被转换到[0-1]范围。根据人们的经验得到一个转换的比例是R:0.3 G:0.6 B:0.1 这个大概就是这个范围得到转换效果还不错。
关键代码
fixed4 frag(v2f IN) : SV_Target
{
fixed4 color = tex2D(_MainTex, IN.texcoord) * IN.color;
fixed valuergb = color.r * 0.3 + color.g * 0.6 + color.b * 0.1;
color.rgb = valuergb;
return color;
}
效果图
NGUI
复制4份 NGUI 自带 Shader(黄色),在每一个片段着色器进行一个灰度转换(红色)。注意 Shader 的名称被裁减的是前面加了Hidden。
添加关键代码片段
col.rgb = col.r*0.3+col.g*0.6+col.b*0.1;