世界空间的法线映射

原创 2006年05月22日 03:23:00

一看今天还挺早的(对于正常作息来说,也很“早”^^),再写点东西。

最近一直在研究地形相关的东西,其中一个问题就是地形在经过了LOD处理之后,顶点光照变得不再适用。因为patch的LOD级别变化时,一些顶点会突然出现或消失,如果采用顶点光照,pop顶点附近的亮度就会发生突然的改变,看起来很不自然;另一个缺点是视野中远处的地形会缺乏光照细节,因为顶点很少。

于是就考虑使用一个法线图来计算光照,分辨率只需要每地形格一个象素,可以根据顶点坐标事先处理好。这样在近处就能有和顶点光照同样的细节度,而远处不论mesh的精度有多低,光照细节始终保持不变。地形本身不会运动,所以这种法线映射可以是世界空间的,也就是说省去了切线变换等计算(关于切线空间法线映射的原理可以看前一篇文章),在PS中采样到的法线已经是世界空间的向量,可以直接拿来计算光照,这样也不用写VS了。另外由于使用了法线映射并且不需要计算切线变换矩阵,顶点数据中就不需要附带法线信息了。

当然只有支持ps_1_1以上的显卡才可以用,不知道固定渲染管线是否这种映射,稍后可以查一下资料。

如果还要在地形细节纹理中使用法线映射,那切线空间的计算又变得必须了。虽然理论上在PS中根据法线图采样得到的世界空间的法线也能计算出切线变换矩阵(因为地形顶点的特殊性,顶点的平面坐标和纹理坐标是线性相关的),但那样必然造成效率上的很大损失。如果恢复顶点的normal,tangent等信息,恢复VS的切线矩阵计算的话,世界空间的法线映射又变得没有用武之地。可能比较好的折中方案是对近处的地表采用顶点法线+细节法线映射;远处的地表直接采用世界空间的法线映射,反正远处的细节凹凸也看不出来。

这种文章没有图确实比较不爽,下回争取搞点图:)

相关文章推荐

Shader:法线转世界空间

转 http://www.cnblogs.com/qzzlw/archive/2012/10/23/2736277.html 顶点从模型空间转换到世界坐标空间只需要乘以世界转换矩阵即可,...

[OpenGL] Simple Bump mapping(简单凹凸纹理映射)

reference:原文地址 code:下载源代码 注:这份代码年代比较久远了,直接跑会提示各种未定义标识符,经过查阅发现这些都是glew中的。如果想要通过编译,首先需要配置并include gl...

法线映射(1)

  • 2014年04月02日 17:42
  • 1.67MB
  • 下载

D3D11法线映射示例

  • 2013年03月11日 17:29
  • 1.25MB
  • 下载

【D3D11游戏编程】学习笔记二十五:法线映射(Normal Mapping)

(注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~)            1. 为什...
  • BonChoix
  • BonChoix
  • 2013年03月12日 08:13
  • 16760

法线映射(2)

  • 2014年04月02日 17:44
  • 392KB
  • 下载

对于法线映射(Normal Map) 的深入研究

前几篇文章写过有关法线贴图的内容,这次文章将讨论其原理及相关优化。回过头来看一下原来的文章真有种想删掉的感觉。。。 为什么叫法线贴图,我们知道法线(Normal)是垂直于一个面的直线...

DirectX 3D_基础之光照 材质 顶点法线 光源 纹理映射 纹理坐标 多级纹理 纹理过滤

每日一语:                  总有一些人,总在感叹社会的不公,总在那里,嫉妒别人,诅咒别人,完全不从自身找原因。社会总是相对的公平,从来都不会有绝对的公平,记住一句话,如果你不...

对于法线映射(Normal Map) 的深入研究

前几篇文章写过有关法线贴图的内容,这次文章将讨论其原理及相关优化。回过头来看一下原来的文章真有种想删掉的感觉。。。 为什么叫法线贴图,我们知道法线(Normal)是垂直于一个面的直线...
  • weiqubo
  • weiqubo
  • 2011年12月05日 16:54
  • 1751

Shader实现法线映射、透明效果

法线映射 实现原理: 按纹理映射方式先获取纹理坐标上的像素颜色值,由于颜色值范围在[0,1],法线值为[-1,1],可以使用UnpackNormal函数获取法线值 这里需要注意的是获取的法线值是在切线...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:世界空间的法线映射
举报原因:
原因补充:

(最多只允许输入30个字)