- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈抗锯齿技术上海交通大学王哲航
浅谈抗锯齿技术
上海交通大学 王哲航
---------------------------------------------------------------------
摘要:
本文介绍了计算机图形学中的抗锯齿技术尤其是在3D图形中的全屏抗锯齿(FSAA)技术,并介绍了目前抗锯齿技术的发展现状、较常见的几种技术,以及未来的展望。
关键词:
全屏抗锯齿(FSAA) 多点采样(MSAA) 超级采样(SSAA)
---------------------------------------------------------------------
3D显卡在短短的几年时间内取得了飞速发展。在竞争日益激烈的同时,各大显示芯片厂商也在不停地开发新技术,以求在技术上打败对手。然而,在经历了“速度第一”的时代后,厂商的工程师们也开始思考:难道3D游戏中速度是惟一的吗?答案显然是否定的。在大多数游戏中,如果运行时的分辨率被设定在1024×768以下,那么画面质量是令人不敢恭维的。但是当分辨率提升之后,又受到了硬件的限制,此时很难保证游戏的运行速度,因为过高的分辨率占用了3D芯片大量的运算周期和显存。
更加令人担心的是,以DirectX 9.0为最新平台的新一代游戏对于画质有了更高的要求,而与此同时带来的硬件要求也是令人难以想象的。毫无疑问,一味地追求像素填充率来满足分辨率的需求是不现实的,必须以另一种方式来展现完美的3D画面。
为此,全屏抗锯齿技术(FSAA)就诞生了。也许它并不是一个完美的方案,因为它对游戏的运行速度有很大的影响。但是,在目前看来,全屏抗锯齿技术还是大有前途的,因为它在最大程度上提供了最佳的画质。也为3D显卡的发展指明了方向——画质同样重要!
什么是锯齿?
众所周知,我们可看到的所有计算机图形最终都会通过像素表现在屏幕上。而计算机图形学定义中像素与像素之间以矩阵的方式排列。
像素的排列方式决定了计算机无法直接生成真正意义上的非水平和非垂直线段。事实上,我们只要打开Windows的画图工具,然后画出一条斜线就会发现,这些斜线实际上也是由若干很短而位置不同的水平线构成。
我们用下图来加以说明(图1),在图1(a)中有一个类似山的图形,我们
用一个网格来描绘此图形,在这网格中的每一个小方格我们称它为像素(pixel),现在对这些像素作上色的动作,并以“0”、“1”来表示,若图形通过像素的中心部分,我们称这像素被取样(sample),以“0”表示(或以黑色表示),反之则以“1”表示(或以白色表示);按照这样的规则,我们将上完色的图形显示在图1(b)中。在图1(b)中我们发现图形边缘由原先平滑的边缘变成阶梯状边缘,在计算机图形学中称这个现象为混淆。这样的结果就是因为取样而造成的,我们称这种阶梯状的边缘为锯齿(Aliasing或Jaggies)
二、为什么需要抗锯齿
全屏抗锯齿技术主要是针对3D画面中图像的锯齿、粗糙边缘以及其它缺陷加以润饰平滑的技术。经由全屏锯齿技术的处理后,画面不但平滑细腻,而且更接近真实效果。这种技术不会在游戏画面的色彩或者色阶的过渡上给我们带来什么好处,并且对于传统的2D显示,它也是没有任何作用的。但是在3D的应用程序中,使用它对于提高画面质量却是非常有效的。
那为什么我们可以在全屏抗锯齿技术的画面中看到平滑的物体边缘呢?这是因为显卡通过一些补偿方法来达到“边缘抗失真”的效果,这其实只是把这一失真缩小到人眼不易觉察到的范围。前文已经说过只要有像素锯齿就会存在,但整体显示效果已经大大改善了。
图2 4XFSAA与NO FSAA 在HL2中的画面对比
抗锯齿带来的效果最明显的应该就是场景里的一些电线等直线的物体了(图2),开启之后它们的物体边沿变得十分光滑,整个画面质量都得到了非常大的改善。
全屏抗锯齿技术
我们可以通过对象素所在的交叉点进行计算来达到这一目的,边界的效果体现了每个象素所能表现细节的一个方面。举个例子来说,一棵垂直生长树的边界可能其宽度只占有了一个象素,我们如何体现这棵树的边缘效果呢?我们所需要的是一个比较通用的方法来提升由象素所组成场景的效果,而要做到这一点,最直接的方法就是增加对每个象素所占有的小的场景采用的采样点数。这些独立的采样点通常被称为子采样(sub-samples),同时他们都是以象素为单位成组的产生的。对每个象素生成子采样的各个独立的采样点称为上采样过程(up-sampling),而所采用的子采样个数我们用“X”来表示(譬如2X,4X,6X等等)。通过平均运算子采样得到的颜色来对单个象素进行着色以使得该象素更加具有表现力的这一过程我们成为下采样过程(down-sampling)。
文档评论(0)