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片段與頂點着色光照漫反射
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.