【图形学】抗锯齿方法总结
文章目录
- Super Sampling
- MSAA(MultiSampling AA)
- SSAA(SuperSampling AA)
- Post Processing AA
- TAA(Temporal AA)
- 反向投影
- 验证数据
- MLAA(Morphological AA)
- SMAA(Enhanced Subpixel Morphological AA)
- FXAA(Fast Approximately AA)
- 参考文章
本文简单总结了常见的抗锯齿方法,包括以MSAA为主的超采样抗锯齿方法,和现在主流的后处理抗锯齿方法。
Super Sampling
MSAA(MultiSampling AA)
原理:在光栅化阶段,判断一个三角形是否被像素覆盖的时候计算三角形对子像素的覆盖情况,但计算颜色时只用像素中心坐标计算一次颜色,然后将着色结果乘以coverage的比例
光栅化:确定每个顶点最终位于屏幕上的哪个像素,判断每个像素是否被三角形覆盖
对三角形内部的像素:pixel shader计算的颜色会存到全部4个子采样点中
对三角形边缘的像素:pixel shader计算的颜色只会存到被三角形覆盖的子采样点中
最后对4个子采样点的颜色进行插值。因为颜色是以父采样点中心计算的,所以pixel shader只计算一次颜色即可。
特点:
只支持前向渲染,不支持延迟渲染
静态画面表现好,时域上不稳定
只能消除几何走样,不能解决高光区域着色走样
SSAA(SuperSampling AA)
原理:光栅化时,采样多个子像素,进行加权平均,作为最终像素的颜色
MSAA是对SSAA的改进
Post Processing AA
TAA(Temporal AA)
原理:对每一帧画面,加上微小的抖动偏移(0~1像素),在时域上得到当前像素的子像素信息,在时域上加权融合,得到当前像素的最终颜色
特点:
将子像素采样分摊到多个历史帧上,减少每帧的开销
支持延迟渲染
需要额外的内存开销,velocity buffer
实现细节:
反向投影
由于物体运动和相机抖动,当前像素对应的上一帧像素不表示同一个物体点,需要得到当前像素在上一帧的位置,利用速度缓冲velocity buffer
插值:当前像素对应的上一帧的点不一定在像素中心,需要插值得到
当前像素在上一帧的颜色
验证数据
直接混合可能会出现鬼影现象
原因:历史像素与当前像素无关,混合的几个点颜色差异太大。例如上一帧对应的点被遮挡了,光照发生变化等
解决方法:判断历史颜色值是否在当前颜色值及其周围点的颜色值的AABB范围里
MLAA(Morphological AA)
原理:通过亮度、颜色、深度、法线等检测每帧图像的边缘,对边缘进行模式识别,分为Z、U、L三类。根据边缘的形状,判断原始边缘的形状,对边缘进行重新矢量化,计算权重,与周围颜色进行混合
特点:
形态学抗锯齿
后处理
SMAA(Enhanced Subpixel Morphological AA)
在MLAA的基础之上建立
论文地址
FXAA(Fast Approximately AA)
传统MSAA的高性能近似版
边缘像素的混合由GPU的ALU执行,占用的显存带宽显著小于MSAA
无差别对所有图形边缘进行柔化
参考文章
游戏反走样算法调研 | 英伟达最新 DLSS, TAA, FXAA, MSAA 原理及比较
图形学基础 - 着色 - TAA抗锯齿
TAA 反走样算法研究 | 时域超采样技术
SMAA算法详解
请问FXAA、FSAA与MSAA有什么区别?效果和性能上哪个好?
【图形学】抗锯齿方法总结相关推荐
- 图形学中的抗锯齿讨论以及在unity中的应用
抗锯齿(Anti-Aliasing)是图形学中,很重要的一个部分.本文旨在做一些分析总结,并对平时不理解的细节,做了调研,但毕竟不是做GPU行家,所以有不对的地方,欢迎拍砖^^. 1 什么是锯齿 下图 ...
- 游戏中的抗锯齿技术Anti-Alasing提炼总结
游戏中的抗锯齿技术Anti-Alasing提炼总结 锯齿(走样,失真)产生的根本原因 图形学的根本过程是一个图形转化成图像的过程,该过程是一个连续信号经过采样转化成离散信号(显示设备的像素是离散的)的 ...
- 【NO.3】图形渲染,光照,抗锯齿简介,透明渲染排序简介
<real-time提炼总结 第四章><Real-Time Rendering 3rd 第五章><unity shader 入门精要 第六章 > 图形渲染与视觉 ...
- OpenGL基础43:抗锯齿
一.走样与反走样 走样(Aliasing)就是锯齿化,反走样(Anti-aliasing)就是抗锯齿 只要玩过游戏,那么都应该对抗锯齿不陌生,不少游戏也都有关于抗锯齿的设置 如上图,放大的部分能很明显 ...
- 【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
写在前面 在之前的基础篇中,我们讲到了在绘制点线时如何处理边缘的锯齿,也就是使用smoothstep函数.而模糊参数是一些定值,或者是跟屏幕分辨率相关的数值,例如分辨率宽度的5%等等.但这种方法其实是 ...
- 电影级高画质!3D游戏抗锯齿技术解析
几乎无法区分的现实和虚拟 泡泡网显卡频道8月24日 近几年来显卡技术的发展速度可谓是突飞猛进,不仅仅是性能的提升,更多的新特效也令我们的游戏世界更加精彩更加逼真.近日人气明星姚晨在微博上发出一张水面照 ...
- UE4在PSVR中的抗锯齿和优化相关知识
UE4目前版本(4.15)在PS平台上并不支持MSAA,在未来的版本会加入.也就是说目前没有办法在PS平台上使用Forward Rendering + MSAA的组合 FXAA效率最高,但效果最差,只 ...
- 【OpenGL】笔记二十九、抗锯齿(MSAA)
1. 流程 经过之前的教程,我们目前渲染出来的画面已经有了足够的表现力,但是还是有一些缺陷,比如当我们的渲染画面分辨率跟不上屏幕分辨率时,在我们渲染的图形边缘一些比较严重的锯齿效果就会显现: 自然,这 ...
- cesium1.91新特性——MSAA(多重采样抗锯齿)
文章目录 1.Cesium1.91更新 2.MSAA介绍 3.开启MSAA Cesium实战系列文章总目录: 传送门 1.Cesium1.91更新 3月Cesium更新了新版本Cesium 1.91. ...
最新文章
- maven,阿里云国内镜像,提高jar包下载速度
- python函数详解
- 超详细图解!【MySQL进阶篇】MySQL架构原理
- 第2、3讲 图像的存储格式
- 暑期训练日志----2018.8.24
- oracle之 如何 dump logfile
- 30天提升技术人的写作力-第七天
- Tuxedo 介绍与安装
- 一分钟搞懂NB-IoT行业发展
- linux 中gnu的含义是,GNU是什么意思
- 在Qt环境下进行人机交互界面设计--工具条
- Python——绘制柱状图
- 4G车牌识别摄像机 瞬间启动 快速唤醒抓拍 超低功耗硬件方案
- Spring boot @Value 注入 boolean 设置默认值问题
- 8253(8254)计时/计数器简介
- 苹果CMS完全开发文档 - 苹果CMS手册 - 苹果CMS教程 - 苹果CMS帮助 - 苹果cmsV10
- 软件开发公司的提成制度【修订中】
- CISP——访问控制(自主访问控制和强制访问控制)
- 潛行空間中1~6的編織法(A)
- 单向链表反转(倒置)问题
热门文章
- 基于Java的食品团购系统
- 一个基于stream的EPICS IOC应用程序
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java面向大学生的党建管理系统07g68
- 常见硬件术语手册!绝对权威!(转!)四、光驱术语解释
- 1000个工程师、500个设计建筑师、2500个社区经理,这家公司你如何来定义?
- Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解
- cocos2dx中的屏幕大小
- HTTPie 官方文档中文翻译版
- Spring框架面试题:AOP是什么?都用它做什么?
- Linux系统查看oracle日志,Linux 查询oracle错误日志警告日志