【Unity Shader】Unity3D中的屏幕着色器和图像特效
如果你经常使用unity3D,你一定不会对图像特效感到陌生。图像特效通过添加在相机上的脚本,来改变渲染输出。尽管通过标准C#脚本编写,实际计算通过着色器来完成。迄今为止,材质直接应用于几何体;材质也能用于渲染屏幕外的图片,使得图片便于后期加工。当着色器使用这种方式时,他们通常被称为屏幕着色器。步骤1:着色器让我们先从一个简单的例子开始:一个将彩色图片变灰的后期特效。
解决该问题的前提是假设纹理提供着色器,并且我们希望输出该纹理的灰度模式。
010203040506070809101112131415161718192021222324252627282930Shader \{ _MainTex (\(\{ Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #include \ uniform sampler2D _MainTex; uniform float _bwBlend; float4 frag(v2f_img i) : COLOR { float4 c = tex2D(_MainTex, i.uv); float lum = c.r*.3 + c.g*.59 + c.b*.11; float3 bw = float3( lum, lum, lum ); float4 result = c; result.rgb = lerp(c.rgb, bw,
_bwBlend); return result; } ENDCG } }}