之前在“ShaderLab学习小结(三)漫反射+高光+点光源”中
用了Shade4PointLights()函数来计算点光源的反射。
这个函数定义在unitycg.cginc中,其中用到的前八个参数来自于UnityShaderVariables.cginc。
在这个例子中,只一个通过就实现了平行光,点光源反射,以及高光反射。
后来在学习中,接触到另一种点光源反射的例子,用到两个,第一个通过实现平行光的,第二个实现点光源的
<代码>材质“定制/TestLightColor0”{ SubShader { 通过{ 标记{“LightMode”=癋orwardBase”} CGPROGRAM # pragma顶点绿色 # pragma片段的破片 # include“unitycg.cginc” # include“lighting.cginc” struct v2f { float4 pos:位置; float3正常:正常; float3 wpo: TEXCOORD0; }; v2f绿色(appdata_base v) { v2f o; o.pos=mul (UNITY_MATRIX_MVP v.vertex); o.normal=UnityObjectToWorldNormal (v.normal); o。.xyz wpo=mul (unity_ObjectToWorld v.vertex); 返回啊; } fixed4碎片弹(v2f):颜色 { float3 N=IN.normal; float3 L=(_WorldSpaceLightPos0) .xyz正常化; 浮动ndotl=饱和(点(N, L)); fixed4坳=_LightColor0 * ndotl; +=UNITY_LIGHTMODEL_AMBIENT上校; 返回上校; } ENDCG } 通过{ 标记{“LightMode”=癋orwardAdd”} 混合alt=" ShaderLab学习小结(十四)点光源问题“>
ShaderLab学习小结(十四)点光源问题