面法线是描述多边形面向的方向的单位矢量(即,它与多边形上的所有点正交); 表面法线是与表面上的点的切平面正交的单位矢量; 观察表面法线确定表面上的点“朝向”的方向。上面说的两点分别见下图所示:
(a)面法线与面上的所有点正交。
(b)表面法线是与表面上的点的切平面正交的矢量。
对于光照计算,我们需要在三角形网格表面上求每个点的曲面法线,以便我们可以确定光线照射到网格曲面上的点的角度。 为了获得曲面法线,我们仅在顶点处指定曲面法线(所谓的顶点法线)。 然后,为了在三角形网格的表面上的每个点处获得表面法线近似,这些顶点法线将在光栅化期间在三角形上插值,见下图所示:
顶点法线n0和n1在线段顶点p0和p1处定义,通过在顶点法线之间进行线性插值(加权平均),找到线段内部的点p的法向量n; 也就是说,n = n0 + t(n1-n0)其中t是p = p0 + t(p1-p0)尽管我们为了简单起见在线段上进行了常规插值,但这个想法直观地概括为在3D三角形上插值。
注意事项:
对每个像素的法线和光照计算进行插值称为像素照明或phong照明, 一种不太精确的方法是每个顶点进行照明计算,然后,从顶点着色器输出每顶点光照计算的结果,并在三角形的像素上进行插值,将像素着色器移动到顶点着色器的计算是品质方面的常见性能优化,有时视觉差异非常微妙,使