定义
法线是始终垂直于平面的线
法线就是指模型表面的凹凸感,而凹凸感的产生是因为模型表面像素的光照条件不一样产生的。比如下面这个图,边缘光照压暗了,所以给人有一种凹凸3D感觉。
在片元着色器(Fragment Shader)或像素着色器(Pixel Shader)中,就可以通过法线来进行处理实现复杂的效果
在当下主流的渲染管线情况下(还没有采样法线贴图),在三角形遍历阶段,可以通过插值顶点的法线信息,输出给每个片元(可以简单地理解为屏幕上的像素点)法线信息,因此只要有足够强大的运算能力,只要模型的顶点(面数)越多,模型就越精细,但由于计算机硬件、软件的限制,在实时渲染的情况下,是不够支撑有大量面数的高模的场景。因此就有人发明出将模型的信息用一张贴图来表现,这样的话可以用很小的性能消耗来达到高模的效果。因此可以得出简单的结论,法线贴图是存储有模型每个点位法线信息的贴图,这种对应关系是通过拿到模型的uv进行映射的。
法线贴图的原理
在现代计算机图形学中,RGB是最常见的色彩编码方式,而法线贴图就是将法向量用颜色存在了图上,即用R通道储存X值,G通道是Y值,B通道是Z值,在游戏行业中 ,用图像来储存信息是一种非常常见的方法。对于纹理贴图来说,rgb的值都在[0,1]区间,可能和部分美术认知中的0-255有所出入,但实际上是一样的,只是换了一种计算机的储存方式,这也解释了为什么法线贴图是大片的蓝色。法线的数值区间是[-1,1],所以这个值不能够直接使用,需要做一次映射才能够使用
法线贴图使一个原本光滑的表面上拥有了虚假的凹凸感。但光看这张图就能发现法线贴图一个缺点了,就是法线贴图只适合表面细微的凹凸,不能够表现那种很大的凹凸,所以法线贴图常用于表现表面的小细节。
打赏