Vertex Lighting Vertex shader中並不包含預設的光照模型,所以需要自行計算

此編筆記中只有重點程式碼

設置光照模式 Tags { “LightMode” = “ForwardBase” }

引用文件 #include “UnityCG.cginc” #include “UnityLightingCommon.cginc”

struct appdata { 法線輸入,照明計算中最重要的部分 > float3 normal : NORMAL; };

struct v2f { 保存計算中照明產生的顏色 diffuse > fixed4 diff: COLOR0; };

計算照明 v2f vert (appdata v) { 計算光照 算式講解參照筆記 [Surface Shader 4.Lighting - Writing Lighting Model]

使用 UnityObjectToWorldNormal將頂點法線轉換成 worldSpace
> half3 worldNormal = UnityObjectToWorldNormal(v.normal);

使用 _WorldSpaceLightPos0取得光源方向
> half nl = max(0,dot(worldNormal, _WorldSpaceLightPos0.xyz));

光源強度 * 光照顏色
> o.diff = nl * _LightColor0;

return o;

}

fixed4 frag (v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv);

將光照計算後的顏色加入 texture顏色
> col *= i.diff;
return col;

}