首页 > 计算机图形学 > Shader > Shader法线贴图
2022
01-23

Shader法线贴图

定义

法线贴图就是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。对于视觉效果而言,它的效率比原有的凹凸表面更高,若在特定位置上应用光源,可以让细节程度较低的表面生成高细节程度的精确光照方向和反射效果。

为了提升模型表现细节而又不增加性能消耗,所以不选择提高模型的面数,而是给模型的材质Shader中使用上法线贴图(Normal Map),通过更改模型上的点的法线方向,增加光影凹凸效果,从而提升模型表现细节。使用法线贴图能使一个三角面(平面)表现出凹凸的视觉效果!

使用法线贴图

法线(Normal)每个轴向的取值范围为-1到1,而颜色值(Pixel)的取值范围为0到1。所以在存储(法线方向存储为法线贴图)和使用(在程序中将法线贴图每个点的颜色转变为法线方向)时,存在一个简单的计算转换过程。

  • 存储法线贴图 Pixel = ( Normal + 1 ) / 2
  • 使用法线贴图 Normal = Pixel * 2 - 1

因为法线贴图使用的是切线空间,所以以上转换也是在切线空间下进行的。使用中还要注意光照方向的空间转换问题。

效果

Shader法线贴图 - 第1张  | u3d8技术分享

和不带法线贴图对比

Shader法线贴图 - 第2张  | u3d8技术分享

代码

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments