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

DXT5 的法线压缩方法相关推荐

  1. 降低预测过程计算成本,这些NLP模型压缩方法要知道

    编译 | 凯隐 出品 | AI科技大本营(ID:rgznai100) 近年来,基于谷歌Transformer的语言模型在神经机器翻译,自然语言推理和其他自然语言理解任务上取得了长足进展. 通过多种语言 ...

  2. 神经网络压缩方法:模型量化的概念简介

    来源:DeepHub IMBA 本文约3200字,建议阅读6分钟 本文为你介绍如何使用量化的方法优化重型深度神经网络模型. 在过去的十年中,深度学习在解决许多以前被认为无法解决的问题方面发挥了重要作用 ...

  3. 性能不打折,内存占用减少90%,Facebook提出极致模型压缩方法Quant-Noise

    对于动辄上百 M 大小的神经网络来说,模型压缩能够减少它们的内存占用.通信带宽和计算复杂度等,以便更好地进行应用部署.最近,来自 Facebook AI 的研究者提出了一种新的模型量化压缩技术 Qua ...

  4. 所有你要知道的 BERT 模型压缩方法,都在这里!

    模型压缩可减少受训神经网络的冗余,由于几乎没有 BERT 或者 BERT-Large 模型可直接在 GPU 及智能手机上应用,因此模型压缩方法对于 BERT 的未来的应用前景而言,非常有价值. 软件工 ...

  5. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  6. Sql Server 日志清理 (数据库压缩方法)

    /*********数据库压缩方法*********/ /*******************************/ Declare @db nvarchar(20) -- 数据库名称 SET ...

  7. 深度学习模型压缩方法(3)-----模型剪枝(Pruning)

    link 前言 上一章,将基于核的稀疏化方法的模型压缩方法进行了介绍,提出了几篇值得大家去学习的论文,本章,将继续对深度学习模型压缩方法进行介绍,主要介绍的方向为基于模型裁剪的方法,由于本人主要研究的 ...

  8. http压缩方法(IIS 6.0 与IIS 7.0的详解)

    在网上看了有关这方面的博客,再加上自己的实践,整理了一下,希望对大家有所帮助 本片文章采用两种压缩方法:一种是在IIS上开启GZIP压缩,另一种方法是用CompressionModule压缩模块.下面 ...

  9. MS SQL数据库日志压缩方法[转]

    MS SQL数据库日志压缩方法[转] MS SQL数据库日志压缩方法 MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的 ...

最新文章

  1. spring 事务 对象保存之后,修改的时候,自动更新提交?
  2. Tomcat启动项目时内存溢出问题如何解决
  3. 三星超过台积电 成为全球市值最高半导体公司
  4. 编码方式_机器学习中常用的编码方式
  5. 重温强化学习之函数近似
  6. js实现点击自动下载文件
  7. C#学习常用方法(3000)---Foreach ,in
  8. nginx mozilla_Android进入汽车市场,Mozilla进入电视市场,等等
  9. MongoDB小型文档型数据库使用
  10. Django模板层:模板继承 extends标签和block标签,csrf_token标签
  11. JDK17 带来什么新特性?网友:不好意思,我还在JDK6踏步走...
  12. python json解释器_Python JSON
  13. 易语言利用服务器更新,【原创】利用FTP实现软件自动更新
  14. BZOJ 4199: [Noi2015]品酒大会/UOJ #131. 【NOI2015】品酒大会 后缀自动机 树形dp / 后缀数组 单调栈
  15. 1.5 18:鸡尾酒疗法
  16. Node.js模拟登录强智科技教务系统
  17. echarts动态legend不变更
  18. mac下密码加密zip,暴力破解zip,生成密钥字典
  19. [oeasy]python0125_汉字打印机_点阵式打字机_汉字字形码
  20. 2018CSTC web2 writeup

热门文章

  1. Oracle Database 12c Security - 1. Security for Today’s World
  2. 升级OpenSSH版本(8.8版本)
  3. MATLAB教程七:MATLAB符号计算
  4. 安卓手机系统开发教程!BTAJ面试有关散列(哈希)表的面试题详解,大厂直通车!
  5. 央行工作会议说了什么:定向调控 松紧适度
  6. alu和mdr位数相等吗_计算机组成原理复习
  7. win7自带的便笺桌面工具快捷键.
  8. ITE EC代码解析1
  9. R----stringr包介绍学习
  10. Python零基础速成班-第10讲-Python面向对象编程(下),Property属性、特殊方法、设计模式、链表应用