Normal Map Compress with DXT5

作者:clayman

仅供个人学习使用,请勿转载,勿用于任何商业用途。

这应该是常识性的知识,不过大部分介绍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,所以图片看起来是蓝色,而不是绿色:

转载于:https://www.cnblogs.com/clayman/archive/2010/10/29/1864533.html

Normal Map Compress with DXT5相关推荐

  1. 凹凸贴图(Bump Map)实现原理以及与法线贴图(Normal Map)的区别

    凹凸贴图(Bump Map)实现原理 以及与法线贴图(Normal Map)的区别 1 前言 翻译这篇教程的目的是为了帮助那些对图形渲染技术有兴趣却又苦于找不到免费中文学习资料的人.在我的身边没有任何 ...

  2. 在DirectX 12中使用normal map

    在DirectX 12中使用normal map normal map本身就是一张texture,故而加载normal map的逻辑并不需要进行特殊处理.加入normal map之后,shader层面 ...

  3. [Graphics] 法线图生成器(Normal map generator)

    最近因为研一的课程.作业太多,平时很少有时间干自己的事情,也好久没有写新的文章.而且!!!最倒霉的是,我的算法课由于前两节没选课!导致不知道作业还有截止时间,oh,fuck!!少交了好几次哦我滴龟龟! ...

  4. Normal map (Bump mapping) 法线贴图(凹凸映射) Standard Shader系列10

    Normal map (Bump mapping) 法线贴图(凹凸映射) 本文档主要是对Unity官方手册的个人理解与总结(其实以翻译记录为主:>) 仅作为个人学习使用,不得作为商业用途,欢迎转 ...

  5. 在3ds max中,利用normal map 制作精美骰子

    使用normal map的目的 使用normal map的主要目的是使得low-poly的模型看起来如同high-poly的模型那样精致,比如一个1500个三角形面片的模型在细节上看起来跟一个拥有20 ...

  6. 置换贴图(Displacement map),凹凸贴图(Bump map)与法线贴图(Normal map)的区别

    英文原文地址<Difference between Displacement , Bump and Normap Maps> By Pluralsight on August 14, 20 ...

  7. Unity Shader法线贴图(Normal Map)及其原理

    简介 以前经常听说"模型不好看啊,怎么办啊?"答曰"加法线","做了个高模,准备烘一下法线贴图","有的美术特别屌,直接画法线贴图 ...

  8. 【GTASA】圣安地列斯人物眼睛发光教程 - 法线贴图发光 Normal Map

    [GTASA]人物眼睛发光教程 - 法线贴图 Normal Map 教程小记 一.展示 额,人物算是随便挑一个,但是不是任意的,视实际情况而定. 你好,折纸大师! 二.遇到的困难 实际上,我这个法线贴 ...

  9. Shader Graph11-Detail Normal Map(法线贴图叠加)

    本次我们希望通过叠加两个法线贴图来增加细节. 一.准备资源 我们需要一个模型,1张纹理贴图,2张法线贴图 我们可以在商店下载,这个mesh资源来做这个例子 打开OldWest->VOL3-> ...

最新文章

  1. 【C++】【六】约瑟夫问题
  2. 在Zf2中实现Controller按照URL自动注册
  3. 学习笔记(四)——JavaScript(一)
  4. spring集成redis(ehcache缓存改成redis)
  5. 循环队列及C语言实现二
  6. MapInfo开发心得——控件篇
  7. 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器
  8. IE6.0中getElementsByName和getElementById的bug
  9. photoshop 插件_Photoshop的光度模式
  10. 借助科技的力量,让物联网更好的服务鱼虾养殖业
  11. 虚拟系统管理器QEMU/KVM
  12. AARRR模型——变现:终极目标(下)
  13. 他如何从一位专车司机成功变身CEO?
  14. [深入研究4G/5G/6G专题-57]: L3信令控制-6-什么是无线承载DRB Profile
  15. codevs1380 没有丧尸的舞会
  16. hankerrank 刷题二( Python 基础)
  17. Spring项目启动报错No qualifying bean of type [xxx] available: expected single matching bean but found 2
  18. docker:配置 Docker 加速器
  19. 模型稳定度指标PSI
  20. mac os 苹果操作系统如何切换输入法

热门文章

  1. 基于AVR单片机PWM功能的数控恒流源研制
  2. 全阶滑模观测器程序_滑模观测器转子估算程序
  3. torch.round()
  4. PyTorch中的model.modules(), model.children(), model.named_children(), model.parameters(), model.nam...
  5. 3-31Pytorch与auto-variabletensor
  6. 数据科学入门与实战:Matplotlib绘图DateFrame
  7. 为dhcp服务器授权的作用,有关在 AD DS 中为 DHCP 服务器授权的详细信息
  8. 使用smo算法编写svm对CIFAR-10数据分类
  9. linux中的进程有哪三种基本状态,Linux下的进程有哪三种状态?()
  10. 计算机系统结构安全检测,信息安全体系结构安全测评实验报告.doc