fixed3 albedo = tex2D(_MainTex,i.uv).rgb*_Color.rgb;
fixed3 diffuse=_LightColor0.rgb * albedo * max(0,dot(worldNormal,worldLightDir));
albedo是材质反射率
tex2D
tex2D是Cg的函数,用于对纹理进行采样获取纹素值,第一个才是是需要采样的纹理,第二个是float2类型的纹理坐标
将纹理的颜色和之前定义的作为材质颜色的color属性相乘,得到材质的反射率
diffuse是漫反射光照
基础漫反射计算公式
_LightColor0
_LightColor0是Unity的内置变量,表示光照颜色,不同的LightMode的Pass中表示不同的光照的颜色,在这个Pass中(LightMode=ForwardBase) 这个变量表示最亮平行光的颜色。
dot(worldNormal,worldLightDir)
dot(worldNormal,worldLightDir)表示计算点到光源的向量与点法线的点积,也就是后一个向量在前一个向量方向上的投影(这里两个向量的先后顺序调换没有关系)
max函数(其他CG函数详见CG标准函数库)
max(a, b) | 比较两个标量或等长向量元素,返回最大值。 |