#ifndef DIFFUSE_INCLUDE #define DIFFUSE_INCLUDE struct VertexInput { float4 vertex : POSITION; float3 normal : NORMAL; float4 tangent : TANGENT; float4 color : COLOR; float2 uv : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct VertexOutput { float4 pos : SV_POSITION; float4 uv : TEXCOORD0; float4 normalDir : TEXCOORD1; float3 tangentDir : TEXCOORD2; float3 bitangentDir : TEXCOORD3; float4 posWorld : TEXCOORD4; LIGHTING_COORDS(5,6) UNITY_FOG_COORDS(7) //UNITY_VERTEX_INPUT_INSTANCE_ID }; inline half3 Diffuse(fixed3 _normalMap,fixed4 _mainTex,VertexOutput i) { fixed3 _lightDir = normalize(_WorldSpaceLightPos0.xyz);//光照方向 fixed _NdotL = saturate(dot(_normalMap, _lightDir));//漫反射强度 fixed3 _finalDiffuse = _NdotL * _LightColor0.xyz;//主平行光源颜色 _finalDiffuse *= LIGHT_ATTENUATION(i);//接收投影 _finalDiffuse += UNITY_LIGHTMODEL_AMBIENT.rgb;//环境色 return _finalDiffuse; } #endif