抗锯齿具有恐吓名称,但它为计算机显示器的表现是相当基础的。以这种方式想到它 - 一条线具有无限分辨率,但我们的数字显示器没有。所以,当我们" Snap"我们显示器上的像素网格的一条线,我们可以通过想象的部分像素沿线来补偿,假装我们具有比我们实际执行更高的分辨率显示。喜欢:
正如您在这些小Quiggly黑线上看到的那样,通过使用灰色像素来模拟沿线边缘的部分像素来模拟抗锯齿的抗锯齿。这是一个黑客,但作为黑客去,它'很漂亮的Darn有效。当然,对此问题的正确解决方案是首先具有极高的分辨率显示。但除了微小的手持设备之外,我不会呼吸你的呼吸。
这也适用于更复杂的3D图形场景。也许更多,因此,由于添加运动放大了构成场景边缘的所有那些爬行线的混叠效果。
但是,抗锯齿,特别是在艺术游戏的复杂状态下每秒30或60帧,用数百万多边形和效果有效,并不便宜。根据我的答案在这里,您通常可以预期适当的4x抗锯齿至少25%的性能成本。这是为了获得最优化的抗锯齿版,我们已经能够提出:超级采样的抗锯齿(SSAA)。这本书中最古老的伎俩 - 我将其列出它是普遍的,因为您可以在任何地方使用它基本上,在完成后,在更高的分辨率和下样品中将图像呈现更高的分辨率和下样品。尖锐的边缘变得抗锯齿,因为它们被缩小为尺寸。当然,在那里'是人们不使用SSAA的原因:它花费了财富。无论您的填充率账单如何,它甚至最小的SSAA' s 4x。
多采样的抗锯齿(MSAA)。这是您通常在现代显卡上的硬件中通常拥有的。图形卡呈现为大于最终图像的表面,但在阴影中,每个" cluster"样本(最终在最终屏幕上的单个像素中最终),像素着色器仅运行一次。我们节省了一吨填充率,但我们仍然刻录内存带宽。这种技术不会消除着色器中出现的任何效果,因为着色器在1x时运行,因此alpha切断是锯齿状的。这是运行前向渲染游戏的最常见方式。 MSAA不适用于延迟渲染器,因为在MSAA是&#34之后的照明决策;已解决的" (下大小)到最终的图像尺寸。
覆盖样品抗锯齿(CSAA)。来自NVIDIA [ED:ATI的MSAA进一步优化,相当于]。除了在1x上运行着色器和4x时的帧缓冲器,GPU' S光栅化器在16倍下运行。因此,虽然深度缓冲器产生更好的抗锯齿,但产生的混合的中间色调甚至更好。
几乎所有人"现代"抗锯齿是MSAA黑客的一些变体,甚至花费四分之一的帧。除非你有这么多的表现,否则昂贵的昂贵,除非你甚至关心,甚至都会很昂贵。虽然蔓延的别名线路让我打扰我,但是,我没有感到抗锯齿,值得放弃我的四分之一的帧气和/或关闭其他细节来支付它。但这是在我了解到有一些新出现的MSAA替代品。然后,令我惊讶的是,这些替代方案开始作为本赛季的实际图形选项展示' S PC游戏 - 战场3,天际,蝙蝠侠:Arkham City等。这是什么FXAA的事情,它是如何工作的?让'在行动中看到它:(这是一个缩放的片段;点击查看全屏)fxaa代表快速近似的抗锯齿,它比msa更聪明地聪明,因为它忽略多边形和线边缘,并简单地分析屏幕上的像素。它是在此PDF中记录的像素着色器程序,该程序在Scant毫秒或两个中运行每个帧。在它看到创建人造边缘的像素的情况下,它会平滑它们。它是作者的话,"集成和使用的最简单和最简单的事情。 FXAA具有两个主要优点:FXAA在屏幕上的所有像素中平滑边缘,包括α-混合纹理中的那些和由像素着色器效应产生的那些,这先前没有MSAA的影响而没有古怪的替代方法。 ' s快速。非常非常快。 FXAA算法的版本3在100美元的视频卡上每帧大约需要1.3毫秒。发现早期的版本被发现是4x MSAA的速度,所以你'重新拍摄的速度为12或13%,以启用FXAA - 并且在返回时,您可以获得相当大的别名减少。
唯一的缺点,它是未成年人,是你可能会看到一些不需要的边缘和#34;减少"在纹理或其他地方。我不确定它是否'公平地称之为下行,但FXAA可以直接应用于旧游戏;游戏必须特别编码,以便在他们绘制游戏之前调用FXAA像素着色器' S用户界面,否则它也会愉快地平滑屏幕上的HUD元素的边缘。 FXAA方法是如此善良,其实它使所有其他形式的全屏抗锯齿相对于一夜之间过时。如果您在游戏中有FXAA选项,则应立即启用它并忽略任何其他AA选项。 FXAA是简单的黑客和启发式功能的重要例子。但它也是一个很好的展示如何攻击不同角度的编程问题 - 即而不是思考作为多边形和线条的集合,而是将其视为像素的集合 - 可以启用您可以更快地解决计算困难问题,比任何人都能更好地解决。 [广告]什么'你的下一个职业活动?堆栈溢出职业生涯中有来自伟大公司的最佳工作列表,无论您是'在启动或财富500强寻找机会。您可以搜索我们的工作列表或创建个人资料,让雇主找到您。