Shader置灰

先写下原理:

    白色:(255,255,255,255)

    黑色:  (0,0,0,255)

    灰色:    (x,x,x,255)

    灰色的rgb值是相同的,x越大越接近白色。

    还有一点(这一段是在网上找的):人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此使用不同的权重将得到比较合理的灰度图像。实验和理论推导得出 0.299、 0.587、 0.114。

然后求该值和原颜色的点积,即可得出该点变灰后的rgb值。

片元着色器代码如下

	fixed4 frag(v2f IN) : SV_Target
	{
		fixed4 c = tex2D(_MainTex, IN.texcoord) * IN.color;
		c.rgb *= c.a;
		float gray = dot(c.rgb, float3(0.299, 0.587, 0.114));
		c.rgb = float3(gray, gray, gray);
		return c;
	}

效果图:

Shader置灰_第1张图片

你可能感兴趣的:(Shader)