原理:通过Luminance宏输出_MainTex的灰度值。
Shader "Shader_tex2D" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType" = "Opaque" } LOD 200 CGPROGRAM //声明表面着色函数并设置光照模式为Lambert(漫反射) #pragma surface surf Lambert sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D(_MainTex, IN.uv_MainTex);//从纹理中采样 c = float4(Luminance(c));//设置灰度值 o.Albedo = c.rgb;//设置反射光颜色 o.Alpha = c.a; } ENDCG } Fallback "Diffuse" } // shader编辑器中预览效果