笔记

锯齿是怎么产生的

左图:想要的效果
右图:表现的效果

抗锯齿分类

● 前向渲染: SSAA、MSAA、CSAA、RGSS等
● 延迟渲染: FXAA、MLAA、SMAA等
● 时域上的抗锯齿: TAA、TXAA等
● 基于深度学习: DLSS、DLAA等

前向渲染——抗锯齿

超采样抗锯齿(SSAA)

● 全称 Super Sample Anti-aliasing
● 实现:先渲染到分辨率x4的buffer上,然后再采样至屏幕
● 相当于所有计算都乘了4,以致计算量大,带宽消耗大

● 采样点的分布,参考。有两种方法:均匀分布(OGSS,ordered Grid)和旋转分布(RGSS,Rotated Grid)

多重采样抗锯齿(MSAA)

● 全称 Multisample Anti-aliasing
● 实现:光栅化阶段,像素去判断与三角形的关系时,用4个点来判断,得到百分比;着色器通过百分比进行着色

● 一般是4x的,也就是分为四个点。也有8x,16x的。
● 相比于SSAA,MSAA是得到百分比后再进行光照计算的,计算量节省了不少,但是内存占用其实跟SSAA相同

覆盖采样抗锯齿(CSAA)

● 全称Coverage Sampled Anti-aliasing
● NVIDA上叫CSAA,AMD上叫EQAA;两者原理相同
● MSAA是对每一个采样点计算颜色、深度、遮挡,先解析,然后一个像素计算一次光照;而CSAA是基于MSAA上的改进,相当于把该过程再解耦。因为检查像素是否覆盖的操作比color/z/stencil的获取消耗小,因此,对于N个采样点,会做N次像素覆盖检查,但只用N/2或 N/4个 color/z/stencil buffer,从而减少带宽和内存占用。

例如相对于16x MSAA,只用了1/4倍的color/z/stencil buffer的数量。

● 左图为4x MSAA, 右图为 16x CSAA。可以看出16x CSAA的效果是能比4x MSAA更准确的,而使用的带宽却更少了

延迟渲染——抗锯齿

快速近似抗锯齿(FXAA)

● 全称 Fast Approxiamte Anti-Aliasing
● 后期抗锯齿
● 通过后处理卷积描边,提取出边缘后,对边缘进行模糊

形态学抗锯齿(MLAA)

● 全称Morphological AA,参考链接
● 实现:

  1. 边缘检测。有两种方法,一是根据深度图检测边缘,二是根据 RGB 值的加权得到的亮度 (luminance) 来检测边缘。具体实现是在 Pixel Shader 里面,用当前点的颜色分别减去左边像素和上边像素的值,取绝对值后分别存在一张纹理的 R 和 G 通道,所以得到的 Edges texture 里面的红色点代表其左边为边缘,绿色点代表其上边为边缘,黄色点代表其左边和上边为边缘,如下图所示:
  2. 计算混合权重。如下图所示:

    锯齿主要发生在边缘的转角处,所以比如一条横着的长边缘,中间的点的混合程度就要比两端的点混合程度要弱,并且不同的端点处的形状的混合程度也不一样。混合程度体现为混合权重,所以需要根据边缘的:a)长度 b)形状,来确定混合权重
  3. 根据权重对颜色进行混合。

    ● FXAA会导致画面模糊,SMAA几乎解决了这个问题
    ● 性能消耗仅约为FXAA的2倍左右

SMAA

● 全称Enhanced Subpixel Morphological AA,参考链接1 参考链接2
● 是对MLAA的改进

  1. 边缘检测的改进。在提取边缘时会严格区分边缘的形状,低质量的边缘提取和高质量的边缘提取结果会有很大的差别。所以 SMAA 在低质量(SMAA 1x)的设定下效果反而不如同等级的 FXAA。
  2. 提取更多几何信息,保留不该模糊的边缘
  3. 引入了对角线的边缘检测
  4. 更改了由面积计算权重的公式
    ● 除了这四点改进之外,SMAA 还与 MSAA 及 TAA 进行了结合,实现了更为细腻的抗锯齿效果

时域上的抗锯齿

时间抗锯齿(TAA)

● 全称TemporalAA
● 将采样点从单帧分布,转移到多帧上,使得每一帧不需要多次采样增加计算量
● 采样点在像素内是随机偏移的;然后累加权重得到百分比。

● 用motion vector保存每帧移动的偏移,就不用重新计算已算过的部分。但往往会盲目地跟随动物体,从而造成屏幕上的细节模糊不清

TXAA

● 是TAA、MSAA的组合
● 8X MSAA的画质用TXAA 2X仅需花费2X MSAA的性能消耗
● 诸多游戏(巫师3、GTA5、刺客信条3、4、看门狗1、2)都有用TXAA

基于深度学习

DLSS

● DLSS:在图像质量损失最小的情况下提高性能;参考链接
● 本质是渲染更少的像素,用AI重建更高的分辨率。例如:DLSS 强制游戏以较低的分辨率(通常为 1440p)进行渲染,然后使用其经过训练的 AI 算法来渲染更高的分辨率(通常为 4K)。
● 背后使用的技术是 Recurrent CNN,递归神经网络与卷积神经网络的一种结合。因此他能结合时域上的信息保证时域稳定性——像素具有帧间连贯性,不会出现过多闪烁、跳变现象。其次,结合神经网络的强大图形重建能力,DLSS 能够分别对几何边缘以及着色进行重建。

● DLSS 效果优于现有的主流 AA 算法,它能同时在几何、着色、时域上进行反走样;不足之处是神经网络带来的性能开销比较大(需要预学习),仅仅反走样就占用了画面 20% 的渲染时长,相比之下 Temporal AA 开销低了一个量级。

DLAA

● 与DLSS刚好相反,性能受到轻微影响的情况下显著**提高图像质量*
● 与TAA和DLSS相比,能产生更好的图像质量,尤其是在较低的分辨率下。

抗锯齿速度排序

FXAA > TAA > TXAA > MSAA > SSAA

抗锯齿内存占用排序

SSAA > MSAA > CSAA > FXAA > TXAA > TAA

作业

对比各个抗锯齿方案的优劣(效果、效率)

● 效果:
低配下 TAA>FXAA>SMAA
高配开DLSS>MSAA>TAA
TODO!!!

有能力的进行各个方案真机测试(尽量让手机达到瓶颈状态下测试)

TODO!!!
建议使用抓帧软件,比如骁龙的用SnapdragonProfiler,可以告诉每个阶段的性能消耗。
苹果,Xcode抓帧:模拟环境,不准确

挖个坑

TODO!!!
软管线上试着实现几个AA。。。

参考资料

https://www.bilibili.com/video/BV1VR4y1J7KT?p=2
https://zhuanlan.zhihu.com/p/363624370
https://developer.download.nvidia.cn/SDK/10/direct3d/Source/CSAATutorial/doc/CSAATutorial.pdf
https://www.tomshardware.com/reviews/anti-aliasing-nvidia-geforce-amd-radeon,2868-4.html
https://zhuanlan.zhihu.com/p/57503957

【技美百人计划】图形 4.4 抗锯齿概论相关推荐

  1. 技美 百人计划 (图形)1.1渲染流程

    技美 百人计划 (图形) 图形 1.1 渲染流水管线2.1数学基础 很早之前就有关注百人计划这个系列的课程,也跟着看到了2.几的教学但是一直没有写笔记,最近看到百人计划已经快更新完毕了,决定从头看一遍 ...

  2. 技美 百人计划 2.1色彩空间

    技美 百人计划 2.1色彩空间 2.1色彩空间 色彩发送器 色彩的认知 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼.但人眼接收到光线后,人眼的细胞产生了一系列化学反应,由此把 ...

  3. 【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

    笔记 SSAO介绍 AO 环境光遮蔽,AmbientOcclusion.一种模拟光线到达物体的能力和粗略的全局方法. SSAO 屏幕环境光遮蔽,Screen Space Ambient Occlusi ...

  4. 【技美百人计划】图形 4.5 Dof景深基础

    笔记 景深原理 ● 指相机对焦点前后相对清晰的成像范围,是一段三维空间. ● 针对相机成像产生的概念,肉眼也有类似的效果 景深遇到的问题 因为是基于深度图的实现,如果是半透明物体,则没有深度,要如何解 ...

  5. 【技美百人计划】图形 4.3 实时阴影介绍

    笔记 先讲两个概念 软阴影.硬阴影 硬阴影: ● 应用于点光源 ● 对于每一个像素,只需要检查该像素和光源之间是否有遮挡物存在即可,因此这种和像素一对一的可见性函数结果可以如同表面颜色一样,被存储在一 ...

  6. 【技美百人计划】美术 1.1.3 角色设计精要

    笔记 角色设计流程 设计流程: 角色设计流程: 确定角色关键词 ● 了解角色并找到那些让角色独一无二的关键词 ● 如这些角色的重要标识:世界观.背景.能力.职业.性格.喜好 EXP 小美: 设计之初: ...

  7. 【技美百人计划】美术 1.1 美术理论基础

    笔记 光影 光影:物体呈现在人们眼前的时候,不同的受光面其明暗变化以及物体的影子 黑白灰 & 明暗五调子 黑白灰: 受光面为亮形成白,背光面为暗形成黑,其他的过渡为灰色 明暗五调子: ● 高光 ...

  8. 【技美百人计划】美术 2.2 模型基础

    笔记 基本建模流程 贴图 SP:偏向于机械.金属,常用于游戏领域 mary:适合于人物.幻想生物,比如龙.人物皮肤.龙鳞,适用于影视领域 离线渲染: ● 阿诺德:无偏渲染器,较适合人物 ● vary: ...

  9. 【技美百人计划】美术 2.5 模型常见问题及规范

    笔记 布线的合理性(卡线优化) ● 在次世代流程中,对高模的布线没有那么严格.因为高模只是为了获得一张高精度的法线贴图,使低模能够有一个假的信息去做视觉欺骗 ● 为了方便低模去绑定动画.去蒙皮,所以需 ...

最新文章

  1. 总点第一个视频产生选择偏差?Youtube用“浅塔”来纠正
  2. ffmpeg学习1 音视频基本概念
  3. 远程连接mysql速度慢的解决方法
  4. arcgis制作空间变化图怎么做_听说如果做数据分析不用GIS,会被开?
  5. 【Linux】Linux多个关机命令详解
  6. 解决IDEA 中git 无法自动push 提交问题 Push failed: Failed with error: Could not read from remote repository.
  7. intellji External Libraries下依赖包找不到解决方法
  8. 编译安装Gearman、python简单测试
  9. Unity学习笔记——博客中有游戏练习案例
  10. 温度能够瞬间提升到千度以上?究竟是什么原理
  11. mysql 增量 命令
  12. Java 练习题 Fibonacci数列
  13. springbooot使用google验证码
  14. 撒克逊人:XSLT处理器的剖析
  15. LaTex论文排版 | (25) Latex 字母上面加符号 波浪线 横线 角号等
  16. ZBrush坐标轴控制
  17. distiller的另一个实例正忙于启动_PLC编程实例丨一步一步教你设计PLC控制电机转停反控制系统~...
  18. DBA在项目中的角色
  19. java输出hello java_eclipse输出Hello World的实现方法
  20. [mysql]存储过程/存储函数

热门文章

  1. java中的解耦_java-了解如何解耦
  2. 全国省份GDP动态统计图表echarts.js插件
  3. 程序员怎么合理的利用自己的业余时间接单赚钱,怎么才能赚到比本职工作还多的钱呢?
  4. java-01背包(动态规划)
  5. 商法——企业法律风险防范
  6. Android 12 预览版发布,64g 手机用户哭了
  7. java List复制:浅拷贝与深拷贝
  8. SAP工具箱 数据同步平台(九 与PO整合)
  9. 今天你吃粽子了吗?快进来看看你都吃过哪一种粽子吧
  10. 深入探索编译插桩技术(二、AspectJ)