0%

WebGL光照

光源类型:平行光、点光光源、环境光。

反射类型:漫反射、环境反射。

颜色计算

漫反射光颜色 = 入射光颜色 * 表面基底色 * cos θ

θ为入射角 =>

漫反射光颜色 = 入射光颜色 * 表面基底色 * (光线方向 · 法线方向)

光线方向为入射方向反方向的单位向量,两单位向量点乘等于向量夹角的cos值。

环境反射光颜色 = 入射光颜色 * 表面基底色

表面的反射颜色 = 漫反射光颜色 + 环境反射光颜色

法向量计算

正面观察表面,顶点顺序为顺时针。右手法则确定法向量。

变换后的法向量 = 法向量x模型矩阵的逆转置矩阵

逐片元计算

点光源下产生的效果,与通过顶点颜色内插出表面上每个片元的颜色的效果并不完全相同。某些情况下甚至很不一样。需要对表面上每个片元计算光照效果。

  1. 片元在世界坐标系下的坐标
  2. 片元处法向量。将顶点的世界坐标和法向量以varying变量的形式传给片元着色器,片元着色器中就已经是内插后的逐片元值了。