Mipmap 总结:

作用:

1  用于LOD

2 提升图片质量。

3 加速渲染时间,也可以减少每个像素渲染所需要用到采样的纹理数量,(增加所采集样本的存储位置 不太理解这句话)。

4 减少GPU 与cpu的压力,通过提前存储了各种不同级别的mipmap,可以在图片远离和靠近摄像机的时减少计算,从而减轻了cpu与GPU压力。

5 mipmap 是应用在像素级别下的。

怎么选择mipmap 级别:

我首先很自然想到的一点是 会根据图片距离摄像机的远近来选择需要使用的mipmap级别,

如果通过距离摄像机的远近的话,gpu会计算每一个像素距离摄像机的远近,然后选择一个算法,根据距离在 0 和最大的mipmap级别进行线性插值去计算,但究竟选择多大和多小的距离呢,聪明的我这个时候或许会想到转换到摄像机的空间中,然后设置最小的距离为近裁剪面距离,最远的距离为远裁剪面距离,然后根据近远裁剪面与当前的距离做插值计算得出当前像素需要使用的mipmap level,这样会有一个问题,什么样的插值可以根据距离来计算对用的mipmap level呢?得需要先找出 mipmap level 为0 的时候对应的距离,这个距离显然无法确定 除非人为定是不能适配,因此根据距离相机的远近计算mipmap 级别是不行的。

实际上,由于gpu每次计算的不是一个像素,它会同时计算四个屏幕像素,可以利用这个特点,通过差分法求当前周围四个屏幕像素在在uv上投影后的纹素后在水平方向和垂直方向便宜的最大距离,取得这个最大距离的2的对数结果就是当前像素的mipmap级别。为什么是取2的对数呢?

其实需要理解几点

1 mipmap最终的处理结果是让屏幕像素与纹理像素简称纹素一一对应。

2 如果 当前屏幕的四个像素如果没有偏移的话最大的水平和竖直偏移距离会为1 即是一个uv对应的一个纹素大小,这个时候图片所处的mipmap级别就是 0

3 假设当前当像素偏移了一定距离L并且这个距离小于1,表示一个纹素对应的屏幕多个像素,相当于图片被放大了,这个时候使用mipmap是没有意义的。

因此使用mipmap的合理情况是这个偏移的距离L大于1,表示一个屏幕像素覆盖了超过一个纹素,为了让这个一个像素覆盖一个纹素,所以需要减少图片的大小而且由于mipmap级别间图片的水平或者竖直方向比例大小为2倍关系,所以用这个取2的对数,就可以实现屏幕一个像素覆盖一个纹素了。完美理解!!!!

Reference:
https://gamedev.stackexchange.com/questions/130888/what-are-screen-space-derivatives-and-when-would-i-use-them

https://www.reddit.com/r/opengl/comments/3cdg5r/derivation_of_opengls_mipmap_level_computation/

线性插值 :二维空间中,已经知道两个点坐标值。求两个已知点间一点的坐标值,通常用插值lerp进行计算。

双线性插值:二维空间中,在四个点围城的四边形中间求得一点的坐标值,如下图:已经知道Q11 = (x1, y1), Q12 = (x1, y2), Q21 = (x2, y1), and Q22 = (x2, y2). 求p点坐标值

双线性插值就是在线性插值基础上延伸出来的,分两个步骤:

1 先在x方向上先计算 点R1 R2点的线性插值结果。

2 然后在Y方向上,再通过R1 R2 ,计算出P点的线性插值结果极为双线性插值结果。

三线性插值:

就是在双线性插值的基础上,进行两次双线性插值:这样子就是把计算的空间由二维转换成了三维。不难理解计算三线性插值得需要知道8个顶点的坐标位置了,这8个顶点围城的形状刚好为一个立方体盒子。

1 先计算立方体中C001 C000 C101 C100四个点构成的四边形面(也就是立方体的前面),C点在该面上的投影的坐标值Cfront

2 再计算立方体中C011 C010 C110 C111四个点构成的四边形面(也就是立方体的背面),C点在该面上的投影的坐标值Cback

3 然后计算Cfont 和 Cback的线性插值结果即可。

各向异性:...

总结:

双线性插值和三线性插值都有着相同的优点和缺点。计算都很快,并且算法很简单,但是都不会产生和平滑的结果。然而,三线性插值在体积渲染或者流体渲染中会很有用,因为里面需要用到大量的3D格子查找技术,三线性插值会很有帮助。(目前体积渲染还在研究中,先摘抄一段GPU gems volume rendering

Techniques中一段:当数据集存储为一组2D纹理切片时,代理多边形只是与切片对齐的矩形。尽管速度更快,但这种方法仍存在一些缺点。首先,它需要三倍的内存,因为需要沿每个主要方向复制数据片。通过动态地重建切片,可以避免数据复制,并节省一些性能(Lefohn等,2004)。其次,采样率取决于体积的分辨率。可以通过添加中间切片并使用片段着色器执行三线性插值来解决此问题(Rezk-Salama等2000)。第三,采样距离随视点而变化,当从一组切片切换到另一组切片时,强度会随着相机的移动而发生变化,并产生伪影。

先有个大概了解:这段话等研究完体积渲染之后再重新整理翻译)

https://developer.nvidia.com/sites/all/modules/custom/gpugems/books/GPUGems/gpugems_ch39.html

Mipmap 和 过滤 (看完不理解你打我)相关推荐

  1. 【表格合并单元格】vue-elementul表格动态合并实现方法,合并行,合并列方法【详细讲解,看完就理解】

    功能 这个elementul表格单元格合并功能是很多地方会用到的,但是官方文档那个有点看的不明白.这里详细讲一下. 这里包含有一个行的合并方法,一个列的合并方法,都是详细注释了的,讲解了他的规则,看完 ...

  2. 永生源投资app想给存钱怎样存合算?看完就理解了

    人们的理财认识越来越遍及,许多家长也会提早考虑为孩子存储一笔资金,一方面为将来的教育开销做好储藏,另一方面也能够培育孩子的财商.那么想给孩子存钱怎样存合算呢? 下面就和一起来了解一下.  1.儿童银行 ...

  3. 【JavaScript高级】看完就理解面向过程编程和面向对象编程,不来了解一下?

    文章の目录

  4. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(下)

    共分三篇,这是第3篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(上),看完这个你还不理解右值引用和移动构造 你就可以来咬我(中). 下面是新标准下的其他特性(共十点),了解一下, ...

  5. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(中)

    共分三篇,这是第2篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(上),看完这个你还不理解右值引用和移动构造 你就可以来咬我(下). 看完上篇,应该对右值引用和移动构造有了总体上的 ...

  6. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(上)

    共分三篇,这是第一篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(中),看完这个你还不理解右值引用和移动构造 你就可以来咬我(下). C++ 右值引用 & 新特性 C++ ...

  7. 【看完这篇就够了!!!通俗易懂】置信度理解(95%的置信度、置信区间)

    因为读论文时看到了这个概念,在很多实验中也算是一个评测指标了,但不是很理解.这是统计学中的概念,虽然我学过统计学,但是不记得这个概念了,重新来过吧,O(≧口≦)O 百度百科的专业术语比较难理解,我整合 ...

  8. 这样学Shader可以少走几年弯路,看完我信了……

    推荐理由: 你有没有感觉到,看过很多的Shader教程,还是无法上手. 看到一个特效,连思路都没有,只能拿别人做好的Shader干点调参数的活. 我看了麒麟子的这篇教程才知道,原来连很多概念都没弄清楚 ...

  9. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

最新文章

  1. 数据中心分解实验四--PC和VPC
  2. 鼠标移出DIV层时,触发onMouseOut事件
  3. NS安装问题收集(3)
  4. 虚拟网络的组建和应用课后习题答案
  5. C使用递归实现前N个元素的和
  6. 课时46:魔法方法:描述符(property的原理)
  7. 2021信创产业分类排行
  8. 《云网络:数字经济的连接》图书发布会将于7月16日在杭举行
  9. 前端性能优化方法总结
  10. 如何使用Arduino构建3D打印的电子动画眼睛
  11. 阀门的开关方向_一字阀门开关方向怎么辨认
  12. wps在任务栏取消显示多个文档的预览
  13. 【图像压缩】DCT图像无损压缩【含GUI Matlab源码 726期】
  14. 笛卡尔坐标系和齐次坐标系
  15. 我们的竞争对手在看向哪里---对勺海公众号的挖掘与细分
  16. Hbase+Solr操作手册
  17. 代驾小程序开发有哪些功能
  18. java 车联网_车联网V2X开发
  19. 运用python进行海龟交易法回测
  20. 手机安装Linus系统

热门文章

  1. c语言匹配英文,正则英语_正则表达式怎么匹配英文句子_淘题吧
  2. 最易出现的几种心理状态,让人崩溃!
  3. Python:批量读取目录下jpg文件,并输出jpg文件的绝对路径到指定txt文档中。
  4. couldn‘t upgrade db schema: insert into ACT_GE_PROPERTY values (‘common.sche[已解决]
  5. 超越自我,明白混清醒
  6. 红米note5linux刷机包_红米Note5线刷刷机教程_红米Note5官方固件rom原版刷机包
  7. dede获取上级栏目名称
  8. Git:分支的工作流程
  9. 实习总结-2017.5.2
  10. 联想服务器应用场景,联想服务器承载沈阳地铁三大核心应用