UDN
Search public documentation:

PostProcessTechnicalGuideJP
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

Unreal ポストプロセス テクニカルガイド

ドキュメントの概要: ポストプロセス マネージャの技術的な概要。

ドキュメントの変更ログ: Tim Johnson により作成。 Daniel WrightNiklas Smedberg により更新。 Richard Nalezynski? により管理。

はじめに

このドキュメントはプログラマーを対象に、Unreal ポストプロセス システムの主な機能がどのように設計および実装されているかについて説明しています。ポストプロセスエフェクトに関して UnrealEd で行われる作業の詳細は、 ポストプロセスエディタ ユーザーガイド ページを参照してください。

ポストプロセス設定

デフォルトのポストプロセス チェーン

ゲーム中に使用するデフォルトのポストプロセス チェーンは、Engine.ini で設定します。

[Engine.Engine]
DefaultPostProcessName=EngineMaterials.DefaultScenePostProcess

クッキング

クックしたデータを使ってゲームを実行するときは、Engine.ini ファイルの Engine.StartupPackages セクションで、PostProcessChain を含むパッケージの名前が指定されていることを確認してください。 PostProcessChain は他のコンテンツまたはまたはスクリプトコードで参照されていないことが多いので、.ini 設定に明示的に含めておく必要があります。

[Engine.StartupPackages]
+Package=FX_HitEffects

エフェクト設定の適用手順

ポストプロセス エフェクトは、以下の 3 か所の設定による制御を受けます。

  1. PostProcessChain の Effect ノードのプロパティ ("Use World Settings?" が FALSE の場合)。
  2. PostProcessVolume プロパティ ("Use World Settings?" が TRUE で、プレーヤーが PP ボリュームの中にいる場合)
  3. WorldInfo のデフォルトのポストプロセス設定 ("Use World Settings?" が TRUE で、プレーヤーが PP ボリュームの中にいない場合)

MotionBlur と UberPostProcessEffect

Xbox では、モーション ブラーは UberPostProcessEffect によって処理されます。すべてのモーション ブラー設定は UberPostProcessEffect ノードから受け入れ ("Use World Settings?" チェックボックスに応じて)、PostProcessChain の MotionBlurEffect ノードは無視されます。 他のプラットフォームでは、モーション ブラーは PostProcessChain 内の指定 MotionBlurEffect ノードによって処理されます。すべてのモーション ブラー設定は MotionBlurEffect ノードから受け入れ ("Use World Settings?" チェックボックスに応じて)、UberPostProcessEffect ノードのモーションブラー設定は無視されます。

ポストプロセスマネージャ

実行時には、UnrealScript (Unreal スクリプト) または Native (ネイティブ) コードで PostProcessManager クラスを使用してポストプロセスエフェクトを変化させることができます。 この場合、ゲームスクリプトコードを使って PostProcessChain 全体を置き換え、MaterialEffect の MaterialInstanceConstant 値を変更して外観をカスタマイズすることがよくあります。 これらのゲーム中に調整するエフェクトノードについては、PostProcessVolume 設定との競合を避けるために、"Use World Settings?" (bUseWorldSettings) を FALSE に設定しておくとよいでしょう。

新規エフェクトの作成

新しいポストプロセス エフェクトの作成プロセスは極めて簡単です。UPostProcessEffect の派生クラスを新規作成する必要があります。このクラスは、FPostProcessSceneProxy から派生するシーンプロキシを新規作成します。次に、そのプロキシのレンダリングに使用されるグローバルシェーダーを作成します。UMotionBlurEffect、FMotionBlurProcessSceneProxy、FMotionBlurPixelShader、FMotionBlurVertexShader から切り取りと貼り付けを行うだけで、作業の準備はほとんど完了です。

ゲームプレイ スクリプトを使用したエフェクト制御

ゲーム実行中に、ゲームプレイ条件に基づいて 特定のポストプロセス エフェクトを変更する必要が生じることがよくあります。例えば Gears of War では、ゲーム中に一時停止メニューが表示されるときにポストプロセス設定を変更し、シーンをぼやかし、威嚇的な赤みを加えています。=ULocalPlayer.bOverridePostProcessSettings= プロパティを使用して、プレーヤーが現在使用中のポストプロセス値をオーバーライドすることができます。次に、プレーヤーの FCurrentPostProcessVolumeInfo CurrentPPInfo struct (構造体) に、適切な値とそれらの値に移行する補間回数を新規設定します。

パフォーマンス:エフェクトの調整

ポストプロセス エフェクトの調整に役立つテクニックをいくつか紹介します。

便利なコンソール コマンド

SHOW POSTPROCESS.など、便利な コンソールコマンド があります。

その他に以下のコマンドもあります。

SET <EFFECT> bShowInGame FALSE

ここで、EFFECT は MOTIONBLUREFFECT=、 =DOFANDBLOOMEFFECT または MATERIALEFFECT のいずれかになります。

サンプル

アンビエントオクルージョン (AO)

Screen Space Ambient Occlusion (SSAO) は、初期導入後に改良が加えられています。変更案の詳細は、 SSAO の改良 ページを参照してください。