// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
// 漫反射
Shader "Study/08-DiffuseShader"
{
Properties
{
_MatColor("Mat Color",Color) = (1,1,1,1)
}
SubShader
{
// 渲染模式
Tags{
"LightMode" = "ForwardBase"
}
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// 使用光照库
#include "Lighting.cginc"
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
float4 world_vertex: TEXCOORD8;
// 法向量
float3 world_normal: TEXCOORD9;
};
v2f vert (appdata_full v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.world_vertex = mul(unity_ObjectToWorld,v.vertex);
o.world_normal = UnityObjectToWorldNormal(v.normal);
return o;
}
float3 _MatColor;
fixed4 frag (v2f i) : SV_Target
{
// color = light_col * mat_col * cos<N,L>
// N.L = |N|*|L|*cos<N,L>
float3 N = normalize(i.world_normal);
float3 L = normalize(UnityWorldSpaceLightDir(i.world_vertex));
float3 col = _LightColor0 * _MatColor * max(0,dot(N,L));
return fixed4(col,1);
}
ENDCG
}
}
}
【008-Shader-漫反射】
猜你喜欢
转载自blog.csdn.net/qq_18924323/article/details/124863433
今日推荐
周排行