UDN
Search public documentation:

PostProcessAACH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 后期特效 > 后期抗锯齿效果

后期抗锯齿效果


PostProcessAATeaser.jpg
PostProcessAATeaser2.jpg
该图片会显示一些远处的岩石(为了使视觉效果更好,顶部被放大了 2 倍)。
左图: 该图片受到锯齿影响(没有 MSAA)
右图: 同一张图片经过 PostProcessingAA 处理后。

概述


计算机生成的图片通常会出现锯齿现象。这里有很多种锯齿现象,但是在此我们集中研究楼梯的锯齿现象,例如,接近垂直或水平的边的外观。解决这种情况的传统方法是使用超取样(使用较高分辨率进行渲染,然后再对其进行降低采样)或者多采样(诸如超采样但是根据像素进行着色的遮挡)。在这个地方已经进行了很多改进,但是由于很多原因(性能、内存和复杂度),很多游戏都会带有上面涉及的图片失真。

形态学抗锯齿是一项最初由 Intel 开发的技术(请参阅参考指南),它说明了可以在后期中完全删除这个楼梯外观。原始技术是非常复杂的,而且基于 CPU,但是多人致力于 SPU 和 GPU 解决方案。

这种方法中的大多数内容都可以正常合作,但是它无法解决素有的锯齿情况。以下情况可能会发生问题:

  • 如果内容变得太小(例如,边框线)
  • 如果内容移动得较慢(例如,在轻微移动相机的时候查看楼梯的状况)
  • 如果计划将内容制作为硬边的(例如,手绘美术作品或文本)

在后期处理步骤中解决这个问题是极具挑战的,因为它不会向前面的步骤添加任何复杂度,而且可以脱离这些步骤单独进行优化。注意,下面的渲染不可以再清楚地将一个深度与一个像素关联起来,所以,可能会产生新的失真现象。

PostProcessAAOrganic.jpg
该图片清楚地显示了通常在对比强烈的地方会出现锯齿现象。这些区域可以通过这种方法有效地进行定位。
但是,这个图片整体看上去锐化度降低了一些。在这里可以调整 MLAA,不过 FXAA 不会提供任何控件。

如何激活?


在后期处理链的 uberpostprocess 节点中,您可以找到一个新的名为 Post Process Anti Aliasing(后期处理抗锯齿) 的组。

PostProcessAAEditor.png

将这个类型变为激活状态,更改方法(MLAA 或 FXAA)和质量等级。阙值属性只适用于 MLAA 实现。

另外,您可以在游戏中使用控制台变量 PostProcessAAType

  允许重写后期处理抗锯齿类型。
   <0: 使用后期处理设置(默认值: -1)
    0: 关闭
  1-6: FXAA Preset 0:低质量 .. 5:非常高的质量但是慢(渲染 1 遍)
    7: MLAA(需要其他渲染目标(要求 .ini 中的 bAllowPostprocessMLAA=True),渲染 3 遍)
  

因为 MLAA 需要其他内存,所以需要明确地启用它。需要通过以下代码更改下面的 ini 设置(例如,在 BaseEngine.ini 中)激活:

     bAllowPostprocessMLAA = False
  

改变为:

     bAllowPostprocessMLAA = True
  

注意: 也可以在运行时使用下面的控制台命令更改这个 ini 设置:

     scale toggle bAllowPostprocessMLAA
  

实现具体细节


我们已经将 NVIDIA 制作的名为 FXAA 的 MLAA 实现(详见参考资料)和 AMD 的 MLAA(详见参考资料)集成到我们的 uber 后期特效中。在它们的协助下,我们才可以向虚幻引擎 3 的用户提供这项功能。既是 GPU 解决方案,又可以产生非常好的效果。但是它们的一些具体实现细节还是有所不同的:

FXAA(NVIDIA 制作):

  • 渲染一遍
  • 需要各向异性贴图查找

MLAA(AMD 制作):

  • 渲染三遍
  • 不同性能/质量的多个等级
  • 需要其他中间渲染目标内存(可以进行优化)
  • 内部细节稍微少一些的模糊效果
  • 45 度边变得更宽

我们推荐尝试使用这两种方法并根据您自己的内容使用不同的预设置,因为输入内容可能会严重影响最终外观。

因为需要额外的内存,所以我们目前不建议在控制台上使用 MLAA。可以更改着色器,与其他渲染目标共享内存,但是还没有进行这项操作。MLAA 和 FXAA 的 GPU 消耗比较高,应该只在那些可以处理消耗高问题的平台上使用。如果您考虑对您的应用程序使用效果,那么应该花时间研究一下这个平台上的低等级优化问题。

支持的平台


  • FXAA: DX9, DX11, Xbox360, PlayStation3
  • MLAA: DX9, DX11(未经测试的 Xbox360 和 PlayStation3)

参考指南


鸣谢


  • Intel 开发研制 MLAA
  • AMD CAS 团队实现了 GPU MLAA
  • NVIDIA 实现了 FXAA