UDN
Search public documentation:

PostProcessAAJP
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 : マルチサンプリング アンチエイリアス処理は施されていません)。
右 : ポストプロセス アンチエイリアス処理が適用された同一の画像です。

概要


コンピュータによって生成される画像には、しばしばエイリアス (ジャギー) が発生してしまいます。エイリアスにはさまざまな種類がありますが、本ドキュメントでは、ほぼ垂直または水平である階段状のエッジに対象を絞ります。古典的な手法には、スーパーサンプリング (高解像度でレンダリングしてダウンサンプルを行う) の利用や、マルチサンプリング (スーパーサンプリングのようなオクルージョンを用いるがピクセル単位でシェーディングを行う) の利用があります。この分野ではこれまでさまざまな改良が重ねられてきましたが、幾多の理由により (パフォーマンス、メモリ、複雑性)、多くのゲームが先に述べた画像のアーティファクトとともに出荷されています。

MLAA (Morphological Antialiasing: 形態的アンチエイリアス処理) は、元々 Intel によって開発された技術です。これによって、階段状のジャギーをポストプロセスで完全に取り除くことができます。元の技術は複雑で CPU ベースの処理でしたが、複数の人々が SPU および GPU のソリューションに取り組みました。

このメソッドは、大概のコンテンツに非常に良く機能しますが、あらゆるエイリアスのケースを解決することはできません。問題が生じるのは次のような場合です。

  • コンテンツが小さくなりすぎる場合。(例 : ワイヤーフレームの線)
  • コンテンツがゆっくりと動く場合 (例 : カメラを少し動かしながらジャギーを見る場合)
  • コンテンツがハードエッジを意図している場合 (例 : 手書きのアートまたはテキスト)

ポストプロセスの段階でこの問題を解決するのは、魅力的です。なぜなら、前の段階の複雑さを上げることがなく、それらの段階から独立して最適化することができるからです。なお、以下のパスは 1 つの深度が 1 つのピクセルに明確に関連づけられなくなるため、新たなアーティファクトが生じる可能性があります。

PostProcessAAOrganic.jpg
この画像では、強いコントラストの部分でエイリアシング問題がほとんど可視的になるということが、はっきりと示されています。それらの部分は、この方式によって効果的に対処することができます。
ただし、画像全体が若干明瞭度に欠けるきらいがあります。MLAA は調整可能ですが、FXAA では一切制御ができません。

アクティベートの方法


ポストプロセスの uberpostprocess に、 Post Process Anti Aliasing (ポストプロセス アンチエイリアス処理) という名の新たなグループがあります。

PostProcessAAEditor.png

アクティベートの型を変更し、メソッド (MLAA または FXAA) とクオリティレベルを変更します。Threshold (閾値) のプロパティは、MLAA の実装のためにのみ使用されます。

あるいは、以下のように、インゲームで PostProcessAAType (ポストプロセス アンチエイリアス処理の型) コンソール変数を使用することができます。

Allows to override the post process anti aliasing type.
 <0: use post process settings (default: -1)
  0: off
1-6: FXAA Preset 0:low quality .. 5:very high quality but slow (1 pass)
  7: MLAA (requires extra render targets (requires bAllowPostprocessMLAA=True in .ini), 3 pass)

MLAA は、余分なメモリを必要とするため、明示的に有効にする必要があります。以下の ini の設定値を変更します (たとえば、BaseEngine.ini において)。

   bAllowPostprocessMLAA = False

以下のように変更します。

   bAllowPostprocessMLAA = True

補足 : ini の設定値は、以下のコンソールコマンドを使用して実行時に変更することもできます。

   scale toggle bAllowPostprocessMLAA

実装の詳細


NVIDIA 社の FXAA という MLAA の実装 (ページ最下部の「リファレンス」をご覧ください) と AMD 社の MLAA (同じく「リファレンス」をご覧ください) を、uber postprocess エフェクトに統合しました。両社の努力のおかげで、この機能を「Unreal Engine 3」のユーザーに提供することができました。両者とも GPU のソリューションであり、素晴らしい結果をもたらします。ただし、実装の詳細については異なる部分があります。

FXAA (NVIDIA 社) :

  • 1 パス
  • 異方性テクスチャのルックアップを必要とする。

MLAA (AMD 社)

  • 3 パス
  • 複数レベルの各種パフォーマンス / クオリティ
  • 余分な中間レンダリングターゲットのメモリを必要とする。(最適化可能)。

作成するコンテンツのために、両方のメソッドと異なる設定を試すことを推奨します。入力されたコンテンツによって、最終的な出来映えが大きく左右されるからです。

MLAA は、余分なメモリが必要になるため、現在のところコンソールでの使用を推奨することができません。MLAA と FXAA は、GPU のコストが高いため、それらを扱うことができるプラットフォームでのみ使用すべきです。

サポートされているプラットフォーム


  • FXAA: DX9, DX11、Xbox360、PlayStation3
  • MLAA: DX9、DX11 (Xbox360 および PlayStation3 ではテスト未完了です)。

リファレンス


謝意


  • MLAA を開発してくれた Intel に対して。
  • GPU MLAA を実装してくれた AMD CAS チームに対して。
  • FXAA を実装してくれた NVIDIA に対して。