Shader "Custom/光照" {
SubShader{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
#include "lighting.cginc"
struct v2f {
float4 pos: POSITION;
fixed4 color : COLOR;
float3 normal:NORMAL;
};
v2f vert(appdata_base v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex); //用最后矩阵*mvp矩阵
o.color = float4(1, 0, 0, 1);
o.normal = v.normal;
//float c = dot(normalize(v.normal), normalize(_WorldSpaceLightPos0));
//把法向量投射到世界坐标,使用逆矩阵的转置
//float3 N = normalize(v.normal);
//N = mul(N, unity_WorldToObject).xyz;
//float c = dot(N, normalize(_WorldSpaceLightPos0));
//c = saturate(c);
//o.color = _LightColor0 /** c*/;
return o;
}
fixed4 frag(in v2f IN) :COLOR
{
//待做
float3 L = normalize(_WorldSpaceLightPos0).xyz;
L = mul(unity_WorldToObject, L);
float c = dot(IN.normal, L);
c = saturate(c);
IN.color = _LightColor0*c;
return IN.color+UNITY_LIGHTMODEL_AMBIENT;
}
ENDCG
}
}
}
unity shader片段与顶点着色光照漫反射
猜你喜欢
转载自blog.csdn.net/Icecoldless/article/details/103980319
今日推荐
周排行