光照模型主要由三个分量组成:环境光,漫反射,镜面反射。
环境光:
环境光与物体颜色混合后,片元颜色=环境光颜色*物体表面颜色
注:片元颜色是4维向量,颜色是三维向量,所有要将结果转为4维向量
漫反射:
计算漫反射需要得知:片元的法向量和光线的方向向量。
光线的方向向量=光源的坐标-顶点的坐标
由法向量点乘光线方向向量并将其标准化,得到图中夹角的余弦cosθ
漫反射=光源的颜色×cosθ
加入漫反射后:片元颜色=(环境光+漫反射)*物体顶点颜色
镜面反射
镜面反射实现的是物体表面出现光斑的效果
反射颜色=cosθ·光源颜色
此处的θ是光源照到材质表面后折射的方向与摄像机方向的夹角
我们可以使用reflect来得出折射后的向量
摄像机方向向量=摄像机坐标-顶点坐标
cosθ=dot(摄像机方向向量,折射后的方向向量)
镜面反射的光= cosθ 乘 光源颜色
最终的颜色=(环境光+漫反射光+镜面反射光)·光源颜色