shader入门精要读书笔记14 基础纹理-凹凸映射-切线空间中的计算

实现凹凸映射有两种主要的方法:

1.一种是使用一张高度纹理来模拟表面位移,得到一个修改后的法线值,这种称作为高度映射。
高度纹理使用一张高度图来实现凹凸映射,存储强度值,用于模拟表面局部的海拔高度,颜色越浅说明越向外边突起。
看起来直观,缺点是运算复杂,需要消耗更多的性能。
高度图通常会和法线映射一起使用,用于给出表面凹凸的额外信息。也就是说我们通常使用法线映射来修改光照。

2.第二种使用一张法线纹理,直接存储表面法线,这种叫法线映射。
法线纹理存储的就是表面的法线方向,此时需要进行映射(因为法线分量范围[-1,1],而像素分量范围[0,1]),映射为 pixel=(normal+1)/2。
从像素变回法线时反映射 normal=pixel×2-1。

此时法线有两种存储方式:

(1.模型空间的法线纹理,即在模型空间的表面法线存储在一张纹理中。此时法线方向各异,所以存储的纹理颜色各异。

(2.切线空间的法线纹理,即将顶点各自的切线空间中的法线方向存储在一张纹理中。此时切线空间的法线方向就是Z轴方向(也就是说都是(0,0,1),映射后也都相同),所以存储的颜色近乎都是蓝色。同时大量存在的蓝色也说明,大部分法线是和顶点的模型空间法线是一样的,不需要更改。(可以这样理解:改变的颜色的部分就是实现凹凸效果的部分)

各自的优缺点:
模型空间的法线纹理:1简单直观、2可以提供平滑的边界。
切线空间的法线纹理:1自由度高、2可以直接应用到不同的网格上,也可以得到合理结果、3可以进行UV动画,实现凹凸移动效果、4可以重重用法线纹理(节省空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值