光源类型:平行光、点光光源、环境光。
反射类型:漫反射、环境反射。
颜色计算
漫反射光颜色 = 入射光颜色 * 表面基底色 * cos θ
θ为入射角 =>
漫反射光颜色 = 入射光颜色 * 表面基底色 * (光线方向 · 法线方向)
光线方向为入射方向反方向的单位向量,两单位向量点乘等于向量夹角的cos值。
环境反射光颜色 = 入射光颜色 * 表面基底色
表面的反射颜色 = 漫反射光颜色 + 环境反射光颜色
法向量计算
正面观察表面,顶点顺序为顺时针。右手法则确定法向量。
变换后的法向量 = 法向量x模型矩阵的逆转置矩阵
逐片元计算
点光源下产生的效果,与通过顶点颜色内插出表面上每个片元的颜色的效果并不完全相同。某些情况下甚至很不一样。需要对表面上每个片元计算光照效果。
- 片元在世界坐标系下的坐标
- 片元处法向量。将顶点的世界坐标和法向量以varying变量的形式传给片元着色器,片元着色器中就已经是内插后的逐片元值了。