c1_unity/Assets/arts/shaders/models/DiffuseInclude.cginc
2023-04-03 11:04:31 +08:00

34 lines
1.1 KiB
HLSL

#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