在读一本书,《real time renderings》,看到了关于 bump texture的表述,感觉很透彻,比之前看
到的表述好得多,记录一下。
bump texture ,有的翻译为凹凸纹理。是一系列技术的总成。该系列技术是通过修改像素的法线来实
现表面凹凸感的。
bump 不会改变几何图形的法线。因为几何图形中的多边形的法线是通过其定点法线插值得到的,所以
该多边形看起来很平滑,为了使多边形看起来凹凸不平,我们只有在像素渲染器中改变每一个像素对应的
法线了,这样,每个像素的法线都会和原来的不同,有些地方被加强,有些地方被减弱,凹凸效果就有了。
(个人愚见,凹凸效果应该是这样产生的)
有很多种方法来实现bump,主要都是通过将法线修改信息存储在纹理中,然后在像素渲染器中采样通过
纹理采样读取法线信息,和原来的法线计算出新的法线。
这里只说一个比较简单高效的。直接在一张纹理中存入法线信息,计算的时候就直接使用该法线了。这样
做法是比较高效的,因为省却了很多对原有法线的修改计算。但是有一个问题在这里必须的解决。就是纹
理中的法线是在哪个空间中的也就是说是在哪个坐标系中的。如果是世界坐标系,那么模型在旋转后,法线
很可能就不能用了。如果是模型的本地坐标系,在模型内部相对运动的时候也会产生同样的问题。所以,最
好的做法(也是常用的做法)就是存储多边形表面切线空间中的法线。这样可以最大限度的重用。但是计算
量会稍微大一些。