【高级渲染特性】抗锯齿技术介绍

news/2024/7/21 3:54:26 标签: 人工智能, 计算机视觉, 图像处理

什么是锯齿

图像的边缘有明显的像素边界,看起来不自然,好像锯齿一样

什么是抗锯齿

消除或者减轻锯齿

为什么会出现锯齿

计算器屏幕上显示的图像由一个个像素组成,绘制斜线的时候需要按照一个方向填充一个个像素的颜色。分辨率越大像素越多,分辨率越小,像素越少。
像素很少的时候,连续的几个像素看起来就会形成锯齿。分辨越率大锯齿越弱。

抗锯齿技术可以分3类

空间抗锯齿(Spatial anti-aliasing)

从高分辨率的渲染结果里进行采样,填充到低分辨率的结果图像,比如从800x400大小的图形采样像素填充到400x200大小的图像里
填充低分辨率结果时,计算需要在高分辨率结果里采样的像素,并且采样周边像素,对它们进行混合后作为结果填充到目标像素

后处理抗锯齿(Post-process anti-aliasing)

基于图像处理的抗锯齿

时域抗锯齿(TAA)

分帧进行抗锯齿

Spatial anti-aliasing方案

Supersampling anti-aliasing (SSAA)

超级采样抗锯齿,又叫全屏采样抗锯齿(full-scene anti-aliasing (FSAA)),第一个被开发出来的抗锯齿技术,有2个缺点
1 会影响水平、竖直的线,这没必要也导致不清晰
2 处理整张图性能消耗高,不好用在实时渲染

Multisample anti-aliasing (MSAA)

多重采样抗锯齿,每个像素有多个子样本,当前像素的颜色会输出到这些子样本上,当子样本被填满时,所有的子样本做一次均值作为当前像素的最终结果。
这个功能由硬件支持。4x MSAA的采样方式:4x MSAA的采样方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CSAA and EQAA

检测多边形哪些地方可能有锯齿,然后只对这些地方进行超级采样

后处理抗锯齿方案

MLAA and FXAA

快速近似抗锯齿,找到图像的边缘,对边缘进行平滑处理
缺点:相机移动时,高频区域会闪烁

Temporal anti-aliasing (TXAA)

NVIDIA提供了一种称作TXAA的抗锯齿技术,实际上就是TAA+MSAA。通过引入额外的深度信息来实现在延迟渲染上使用MSAA,可以用在实时渲染。

Enhanced subpixel morphological anti-aliasing (SMAA)

和FXAA类似的原理,但是更精细的边缘检测

时域抗锯齿TAA

TAA(Temporal Anti-Aliasing)是时间性抗锯齿,是最常用的图像增强算法之一,这是一种基于着色器的算法,使用运动矢量组合两帧,以确定在何处对前一帧进行采样。
在每一帧对屏幕区域内的像素进行一个抖动操作,这样当连续的多个帧的数据混合起来以后,就相当于对每个像素进行了多次采样。
他将采样点从单帧分布到多个帧上,使得每一帧并不需要多次采样增加计算量,但TAA往往会盲目地跟随移动物体的运动矢量,从而造成屏幕上的细节模糊不清。

参考资料

https://www.hp.com/us-en/shop/tech-takes/what-is-anti-aliasing
https://en.wikipedia.org/wiki/Multisample_anti-aliasing
https://therealmjp.github.io/posts/msaa-overview/
https://zhuanlan.zhihu.com/p/342211163


http://www.niftyadmin.cn/n/1018307.html

相关文章

windows安装TortoiseGit详细使用教程【基础篇】

环境:win8.1 64bit 安装准备: 首先你得安装windows下的git msysgit1.9.5 安装版本控制器客户端tortoisegit tortoisegit1.8.12.0 [32和64别下载错,不习惯英文的朋友,也可以下个语言包] 一、安装图解: 先安装GIT【一…

Git使用教程图文详解

什么是Git Git是目前世界上最先进的分布式版本控制系统。最初由Linus Torvalds编写,用作Linux内核代码的管理。如果你是windows用户,看到这里你可能会担心“是不是只能用在linux上?或者Git对于windows不是那么友好。” ,那么我告诉…

图解Git/图形化的Git参考手册

此页图解git中的最常用命令。如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。 基本用法 上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。 ● git add files 把当前文件放入暂存区域。 ● git commit 给暂存区域生成快照并提交。 …

【git配置默认使用pull rebase方式进行pull】

git config pull.rebase true 最终会在.git的config配置里加上 [pull] rebase true

Python博客目录

python基础 1、helloworld 2、运算符&while循环 3、pycharm安装&for循环&format字符串&list列表&set集合使用 4、元组&字典&字符串&队列 5、文件操作 6、深浅拷贝 7、函数&命名空间&作用域&闭包 8、装饰器函数&进阶 9、迭代器…

unity搭建xlua和emmy_lua的debug环境

配置步骤 1 环境 1.1 vscode 安装emmy_lua 1.2 安装对应的lua版本 1.3 安装java8并配置环境 1.4 emmy_lua的github上下载emmy_lua的64位版本,解压放到工程目录client\Tools\EmmyLua\ 下载地址:https://github.com/EmmyLua/EmmyLuaDebugger/release…

Spark Streaming和Kafka整合是如何保证数据零丢失

当我们正确地部署好Spark Streaming,我们就可以使用Spark Streaming提供的零数据丢失机制。为了体验这个关键的特性,你需要满足以下几个先决条件: 1、输入的数据来自可靠的数据源和可靠的接收器;   2、应用程序的metadata被appl…

给XLua生成Unity Api的EmmyLua代码提示

问题背景 编写Lua代码时使用Unity的Api没有代码提示影响效率,需要一个类型系统和代码提示,下面来解决这个问题 支持类型系统 Lua是动态语言,不支持声明变量类型,需要从语言外入手。有个插件叫EmmyLua,可以使用添加特…