常见抗锯齿算法总结

  • 锯齿由来
  • 抗锯齿算法
    • SSAA
    • MSAA
    • CSAA
    • FSAA
    • TAA

锯齿由来

场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组,这是计算机屏幕产生锯齿的原因。在计算机处理图形的过程中(渲染管线了解一下),有一个非常重要的阶段,就是光栅化,光栅化主要的作用是将顶点数据的不连续性通过插值计算,将两个顶点之间不存在的点进行弥补,然后实现到屏幕像素点上的一一映射。如图,现在要在屏幕上绘制一个三角形,我们就要判断屏幕上哪个点在三角形当中,然后将它绘制出来。

图中显示,有的像素点全部在三角形中,有的部分在其中,有的完全没在其中,但是在屏幕上绘制的时候却不能只绘制像素点的一部分,要么不绘制,要么就整个像素点都绘制。所以绘制完成就出现下面的锯齿情况:

抗锯齿算法

首先说明一下,抗锯齿算法应用于硬件,且在光栅化阶段执行。
锯齿的出现可以简单理解为像素精度不够,那么如何巧妙的提升像素精度呢?

SSAA

超级采样抗锯齿 (Super-Sampling Anti-aliasing),也叫SSAA,其原理比较好理解,就是直接“放大屏幕分辨率”。假设屏幕分辨率为800x600,那么4xSSAA会将屏幕渲染到1600x1200的缓冲区上,然后在下采样到800x600,SSAA可以得到非常好的抗锯齿效果,不过SSAA需要的计算量是非常大的,光栅化和片段着色器都是原来的4倍,渲染缓存的大小也是原来的4倍。4xSSAA就是放大4倍的意思。因为SSAA要浪费大量内存,因此基本没有大量应用。

MSAA

多重采样抗锯齿 (Multi-Sampling Anti-aliasing),MSAA是对SSAA的改进,放弃了扩大像素分辨率,使用多重采样的方式,既然有多重采样,就有“单重采样”,而传统的采样方式就可以理解为“单重采样”,当然并不存在“单重采样”这个东西了。姑且这样叫它。“单重采样”就是一个像素点与一个采样点进行对应,而“多重采样”则是一个像素点与多个采样点进行对应。如图:

看图就好理解了:此图是4MSAA,即一个像素点对应4个采样点,对于边界,我们根据其像素点包围的点数来计算其颜色值,比如边界像素点包含2个采样点,那么它最终的颜色就应该是本来的颜色2/4,同理,如果包含一个,就是颜色*1/4,最终 的效果如下:

这样看起来“圆滑”很多。其有点比较突出,效果也不错,但是
注意,它不适合延迟渲染,这里说的不适合并不是不支持,延迟渲染也能支持MSAA,但是支持他就会大量浪费空间
延迟渲染是什么,在这里不做过多介绍,总之他为了优化光照着色,需要一个GBuffer,这个就是临时渲染出的结果的缓存因为需要GBuffer,所以MSAA也需要进行临时保存,那么保存临时数据的后果则是浪费大量显存。
前面可知4x MSAA的显存消耗是4x的关系,假设我们按照2k的原生分辨率来做,一个RT就是64 MB,用来做MSAA的那个RT就会是不低于256MB。又因为GBuffer至少存depth,normal,basecolor3张RT,那三个MSAA RT就是768MB,这种消耗非常巨大,因此可以理解为“不支持”

CSAA

覆盖采样抗锯齿(Coverage Sampling Anti-Aliasing,简称CSAA)是NVIDIA在G80及其衍生产品首次推向实用化的AA技术,也是目前NVIDIA GeForce 8/9/G200系列独享的AA技术。CSAA就是在MSAA基础上更进一步的节省显存使用量及带宽,简单说CSAA就是将边缘多边形里需要取样的子像素坐标覆盖掉,把原像素坐标强制安置在硬件和驱动程序预先算好的坐标中。这就好比取样标准统一的MSAA,能够最高效率的执行边缘取样,效能提升非常的显著。比方说16xCSAA取样性能下降幅度仅比4xMSAA略高一点,处理效果却几乎和8xMSAA一样。8xCSAA有着4xMSAA的处理效果,性能消耗却和2xMSAA相同。

FSAA

FSAA(Fast Approximate AA)的核心思想是正常采样一个三角形,如果该三角形存在锯齿,则通过边缘检测查找出边界区域,然后使用没有锯齿的线段去替换有锯齿的边界,该方法和采样无关,因此速度很快。

TAA

TAA(Temporal AA),该方法的核心思想是复用上一帧渲染出的结果,并整合到本帧中,从时间上复用以前的计算结果,对于静止的图像优势明显。

参考:
https://www.zhihu.com/search?type=content&q=CSAA

https://zhuanlan.zhihu.com/p/71785353

五分钟搞懂游戏开发中的抗锯齿算法相关推荐

  1. 五分钟搞懂什么是红黑树

    五分钟搞懂什么是红黑树(全程图解) 18-09-04 星925 + 关注 献花(2)  收藏 前戏 红黑树,对很多童鞋来说,是既熟悉又陌生.熟悉是因为在校学习期间,准备面试时,这是重点.然后经过多年的 ...

  2. 【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结

    本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/78884513 导读 这是一篇1万3千 ...

  3. 【转载】【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结

    本文由@浅墨_毛星云 出品,转载请注明出处.    文章链接:  http://blog.csdn.net/poem_qianmo/article/details/78884513 导读 这是一篇1万 ...

  4. 五分钟搞懂Xen、KVM、Qemu间的关系和区别

    Aha,忽然发现我也是个标题党,十分钟搞定某某技能这种标题最吸引人了.当然我也不是华而不实,是不是干货,你读了才知道.话说,接触Xen这么久了,现在才花时间搞清楚这个问题,要不是需要给别人解释,还不知 ...

  5. 【五分钟读懂】PHP中的opcache是什么,opcache是用来干嘛的?

    前言 opcache从字面意思,肯定是缓存这一块的.但是你是否知道它的工作原理是怎样的呢? 这里一点一点让你了解!PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的 ...

  6. 五分钟搞懂什么是红黑树(全程图解)

    红黑树(又叫平衡二叉树),对很多童鞋来说,是既熟悉又陌生.熟悉是因为在校学习期间,准备面试时,这是重点.然后经过多年的荒废,如今已经忘记的差不多了.如果正在看文章的你,马上快要毕业,面临着找工作的压力 ...

  7. 网盾极风云:五分钟搞懂HTTP和HTTPS

    很多小伙伴每天都要用到http和https协议,但是却对他们一知半解,这篇文章将解开你的所有疑惑. HTTP 一般人们都能说出"HTTP是一种超文本传输协议(Hypertext Transf ...

  8. 新人必读!五分钟搞懂通信行业!

    来自 鲜枣课堂 今天这篇文章,是「通信入门三部曲」的第三篇文章,也是最后一篇文章. 前两篇文章,给大家介绍了通信的基本理论(链接),还有移动通信的网络架构(链接).今天这篇会更实用一点,介绍一下&qu ...

  9. [刨根问底] 五分钟搞懂组合评价模型—模糊Borda (以2021 年大学生数模国赛C题为例)

    组合评价模型-模糊Borda(Matlab) 我们的征途是星辰大海,而并非烟尘人间. 目录 组合评价模型-模糊Borda(Matlab) 一.模糊Borda法简介 二.模糊Borda法主要步骤 (1) ...

最新文章

  1. im和音视频开发哪个更好_如何阅读成为更好的开发者的方式
  2. oracle基本概念和术语
  3. 中国牙科用人工骨替代材料市场供需态势与未来投资方向分析报告2022年
  4. The 'Microsoft Jet OLEDB 4.0 Provider' is not registered on the local machine
  5. 深入了解数据人才 | 中国数据人才白皮书
  6. php实现java socket_php与java通过socket通信的实现代码
  7. 正则表达式学习笔记005--脱字符和美元符的认识与应用
  8. mysql 联合表(federated)及视图
  9. 容器技术Docker K8s 44 Serverless Kubernetes(ASK)详解-ASK弹性伸缩管理
  10. synchronized的实现原理用法详解
  11. 【测试】软件测试之测试用例的设计方法
  12. 试手 破解多开限制
  13. 关于在谷歌浏览器,vue-video-player 实现断点续播,currentTime不生效问题
  14. 高清格式——720p/1080i/1080p,谁更清晰
  15. 智能家居的应用研究现状
  16. 第四范式蒋仁皓:什么才是构建企业AI的关键要素
  17. 高德地图嵌入到threejs全景中的踩坑指南
  18. Windows和iPad传输
  19. android telnet服务器端,Android FTP客户端实现、Telnet客户端
  20. 如何将CAD图纸图形同比例缩小或者放大

热门文章

  1. 马云战略的三板斧:上三斧(使命、愿景、价值观),下三斧(组织、人才、KPI)
  2. cacls DOS文件提权
  3. “SlidesAI带你进入PPT的新时代,让幻灯片制作变得更简单!”
  4. 抖音直播带货小白必看白问(上),新手快收藏
  5. 2021-05-19 人工智能图片识别
  6. 第4节 批处理文件及示例
  7. react实现简单的遮罩层
  8. 时装分类+检索之DeepFashion
  9. MySQL的下载、配置(手把手)
  10. Java基础题——15只狮子围成一圈,依次报数,报到7被剔除,最后剩下的狮子成为狮王,求狮王为第几只?