这应该是常识性的知识,不过大部分介绍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. 因OpenCV版本不一致所引发的报错
  2. PAT甲级——1099 Build A Binary Search Tree (二叉搜索树)
  3. 简述网卡的作用和工作原理_发电机调节器的作用及工作原理
  4. 一文读懂HBase(安装,架构原理,优化,API,es二级索引,phoenix)
  5. maven-compiler-plugin的理解
  6. 555定时器的应用——多谐振荡器
  7. 卫星通信(SATCOM)设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 利用CNN进行面部表情识别
  9. SpringMVC文件上传下载实战(单文件、多文件)
  10. csol永恒python怎样施展技能_pycharm辅助学习使用debug功能
  11. 互联网名词解释(通用、运营、广告、APP推广、移动推广、APP运营、商务模式、职位、客户管理)
  12. yaml css教程,YAML 语法
  13. Unity 之游戏特效
  14. NFS4.1规范研究:session
  15. Flink(60):Flink中通用ModelUtil工具类
  16. 帆软决策系统后台中左上角的这个logo和名字如何修改?
  17. HttpReques
  18. 众安保险 x StarRocks | 全新实时分析能力开启数字化经营新局面
  19. Win10 VS Code 修改字体为Source Code Pro
  20. 【云原生之Docker实战】使用docker部署Monica个人开源CRM系统

热门文章

  1. 队列及其应用-取牌游戏
  2. MdEditor富文本编辑器下载
  3. Go语言Windows系统开发环境配置
  4. 透析Spring(一): Spring之IoC容器理解
  5. MYSQLWorkbench看数据库ER图
  6. 运筹优化(一)--运筹学概述
  7. python2.7+PyQt5 制作桌面便签小程序
  8. P1017 进制转换 (洛谷)
  9. MUSIC算法-呼吸心跳信号检测方法(五)
  10. 移驾OSC,并逐步将“呆鸟”博客同步过来。