世界空间的法线映射

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值