光照模型:
自发光,漫反射,高光组成最常见的光照模型。
自发光:shader中无需自己计算可以是用系统api 获取到 :UNITY_LIGHTMODEL_AMBIENT
漫反射:
公式: diffuse = Kd * lightColor * max(dot(N, L), 0)
其中:
Kd是材质的漫反射颜色,这里感觉可以理解为物体的自发光的颜色,如果是白色(1,1,1,1)不用特殊处理。
lightColor是入射漫反射光的颜色,灯光的颜色。
N是规范化的表面法向量,法向量垂直于物体表面,90度。
L是规范化的从顶点到光源的向量。理解为: 物体的每个顶点与光源形成的向量,因为每个顶点都会参与光照计算。
dot(N,L) 该点的法线和该点灯光方向的点积, 几何意义:N·L=|N|*|L|*cosθ,推导公式 当相互垂直是cos90度=0,结果是该点没有光照,则是黑色的。这里只有环境光的颜色。
高光计算:
两种计算方式:
(1)phong 冯氏计算法:
N与LJI 关系计算出R .
(2)Blinn-Phong模型
和上面的Phong模型相比,Blinn模型避免了反射方向 的计算,而是引入了一个新的矢量