Featured image of post Shader入门精要-法线变换

Shader入门精要-法线变换

笔记摘自书籍《Shader入门精要》

法线(法矢量)。在游戏中,一个顶点往往会携带额外的信息,而顶点法线就是其中一种信息。但我们变换一个模型的时候,不仅需要变换它的顶点,还需要变换顶点法线。

切线(切矢量)。与法线类似,切线也是模型顶点携带的一种信息,它通常与纹理空间对齐,而且与法线方向垂直。

由于切线是由两个顶点之间的差值计算得到的,因此我们可以之间使用用于变换顶点的变换矩阵来变换切线。假设,我们使用的3X3的变换矩阵***MA→B***来变换顶点,可以由下面的式子直接得到变换后的切线:

其中***TATB表示在坐标空间A下和坐标空间B下的切线方向。但是如果直接使用MA→B***来变换法线,得到的新法线方向可能就不会与表面垂直了。

我们知道同一个顶点的切线TA和fa法线NA必须满足垂直条件,即TA · NA = 0。现在我们知道了TB = MA→B TA。现在想要找到一矩阵G来变换法线NA,是变换后的法线然然与切线垂直,即