OpenGL进阶系列22 - OpenGL SuperBible - bumpmapping 例子学习
一:背景知识
通俗来说,法线贴图(normal mapping) 是一种让物体表面看起来更有细节、更真实的技术,但其实并没有增加模型的多边形数量。 你可以把它想象成一种“视觉欺骗”:比如你有一个光滑的球体模型,原本表面是平的,没有凹凸。但你贴上一张法线贴图,这张图就像是一张“浮雕地图”,里面每个像素都存储了一个小小的方向(即法线),告诉显卡“这个地方的表面其实是凸起来的”或者“这里是凹进去的”。这些信息不会改变球体的真实形状,只会影响光照计算,让光线照在球体上时,显得有很多小细节,比如划痕、凸起、凹槽等等。所以,法线贴图不增加几何复杂度,模型仍然很简单。它让表面看起来有很多精细细节,比如皮肤纹理、石头凹凸、金属划痕。效果逼真、开销小,是游戏和图形引擎中常用的优化技巧。
最常用的法线贴图坐标空间是切线空间(tangent space),它是一个局部坐标系,其中 正 z 轴 与表面的法线对齐。这个坐标系中的另外两个向量被称为切线向量(tangent)和副切线向量(bitangent 或 binormal)。为了获得最佳效果,这两个向量应分别与纹理的 u 和 v 坐标方向对齐。
&n