Shader "Unlit/jianbian" { Properties { _Color ("Color",Color) = (1,1,1,1) _RampTex ("Texture", 2D) = "white" {} } SubShader { Tags { "LightMode"="ForwardBase" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "Lighting.cginc" struct appdata { float4 vertex : POSITION; float3 normal:NORMAL; }; struct v2f { float4 vertex : SV_POSITION; float3 worldNormal:TEXCOORD1; float3 worldPos:TEXCOORD2; }; fixed4 _Color; sampler2D _RampTex; float4 _RampTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; return o; } fixed4 frag (v2f i) : SV_Target { fixed3 worldNormal = normalize(i.worldNormal); fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos)); fixed z = 0.5 * dot(worldNormal, worldLightDir) + 0.5; //利用光照影响因子构建uv来取样渐变纹理,从而影响漫反射 fixed3 diffuse = tex2D(_RampTex, fixed2(z, z)).rgb * _Color.rgb * _LightColor0.rgb; fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz; return fixed4( diffuse.rgb + ambient.rgb,1); } ENDCG } } }