DXT5 的法线压缩方法
来源:互联网 发布:做微商网络爆款赚钱吗 编辑:程序博客网 时间:2024/06/03 22:25
这应该是常识性的知识,不过大部分介绍normal map技术的文章似乎都忽略了这一点。众所周知,DirectX 9下,直接用DXT 5保存normal map,精度损失是很大的,效果也不好。ATI最早推出了3DC格式来解决这个问题(DirectX 10下有BC5),虽然目前所有a卡和n卡都支持3DC,但有些早期的n卡并不支持3DC,此外,对于xna程序来说,无法使用3DC格式,如何用DXT5保存normal map,并减少精度损失呢? 首先,noraml都为单位矢量,各分量平方和为1,因此,通过2个分量就能计算出第三个分量的值,这样,在保存normal map时只需保存两个通道。对于tangent space normal map来说,可以选择在shader中重建z值:z = sqrt(1 - (x*x + y*y))。对DXT5来说alpha通道精度最高(16bit),其编码方式其实和3DC/BC5中的通道是一样的,所以,可以把normal的x或者y值储存到alpha通道中。最后,DXT5以5.6.5的格式保存普通颜色通道,绿色通道精度稍高于其他两个,剩下的一个法线分量应该放到G通道中。
下面是我从Nvdia的paper中偷来的图,可以看到虽然同为有损压缩,但apha+green通道的DXT压缩效果要比普通直接DXT压缩效果好一些。
下面是神界2中的用此技术压缩的normal map,由于blue通道值都为1而不是0,所以图片看起来是蓝色,而不是绿色:
0 0
- DXT5 的法线压缩方法
- 使用DXT5纹理作为normalmap提高精度的方法
- osg自动生成法线的方法
- 实时法线贴图dxt压缩算法
- 压缩和解压缩的方法
- 求三角形的法线
- 法线的颜色
- 法线贴图的生成
- 法线
- 图片压缩的方法
- 压缩图片的方法
- h264的压缩方法
- 世界空间的法线映射
- 法线贴图光照的演示
- 地形教程 - 法线的计算
- 基于法线的边缘检测
- 三角形分割的法线问题
- 缩放模型的法线矫正
- 哈哈,恭喜
- jQuery常用函数 eq_next等
- Linux备份还原
- 使用mutt及msmtp来发送邮件
- iOS抽象工厂模式-class cluster
- DXT5 的法线压缩方法
- Linux下修改Mysql数据库存放路径
- XSS 防御方法总结
- 如何在Ubuntu QML应用中实现ComboBox的功能
- Android获取设备或应用基本信息
- ajax 请求回到200 但是不进success-2
- Android开发总结笔记 EditText(输入框) 1-1-7
- iOS开发零基础教程之开发证书以及打包问题
- 全局探索式测试