NFOR ノイズ除去 は、オフラインのパス トレースされたレンダリングに高い経時安定性をもたらすために設計された、Unreal Engine の パス トレーサー のための時空間ノイズ除去エンジンです。このノイズ除去は、スムーズなカメラアニメーションを作成し、各ピクセルが時間的にも空間的にも周囲のパッチに基づいてノイズ除去されることで、GPU 加速されます。このアルゴリズムは、研究論文「Nonlinearly Weighted First-Order Regression for denoising Monte Carlo Renderings」から着想を得ています。より多くのディテールを残すためにアルベド復調輝度を帯域幅の選択とスキャッターでノイズ除去します。
NFOR ノイズ除去は、高品質の出力を生成するため ムービー レンダリング キュー (MRQ) でのレンダリングに最適で、極端に少ないサンプル数や高速で移動するオブジェクトの改善を意図したものではありません。

NFOR ノイズ除去を設定する
NFOR ノイズ除去は、NFORDenoise という名前の Unreal Engine のプラグインです。これは、すべてのプロジェクトにおいてデフォルトで有効にする必要がありますが、有効ではない場合、[Plugins (プラグイン)] ブラウザで有効にできます。

パス トレーサーの要件
パス トレーサーを使用する前に、まずは [Project Settings (プロジェクト設定)] で [Support Hardware Ray Tracing (ハードウェア レイ トレーシングをサポート)] を有効にしなくてはなりません。
Unreal Engine でのパス トレーサーの使用における追加のハードウェア要件については、「レイ トレーシング機能およびパス トレーシング機能」の「システム要件」のセクションを参照してください。
ムービー レンダリング グラフを設定する
ムービー レンダリング グラフ は、NFOR ノイズ除去をネイティブにサポートします。時間ノイズ除去を使用するには、Path Traced Renderer パス ノードの設定の一部を変更するだけです。

Path Traced Renderer ノードを選択した状態で、[Details (詳細)] パネルで次の設定を変更します。

-
[Denoiser (ノイズ除去)] カテゴリで [Denoiser Type (ノイズ除去タイプ)] のボックスにチェックを入れ、[Temporal (時間)] に設定します。これにより、時間ノイズ除去 NFOR が有効になります。
NFOR はデフォルトの時間ノイズ除去で、コンソール コマンド「
r.PathTracing.TemporalDenoiser.Name NFOR
」で設定します。設定のドロップダウン セクションでノイズ除去タイプを [Spatial (空間)] に設定した場合、デフォルトのノイズ除去はニューラル ネットワーク エンジン(NNE) バージョンのインテルの Open Image Denoise (OIDN) プラグインになります。これもコンソール コマンド「r.PathTracing.Denoiser.Name NNEDenoiser
」で設定できます。 -
レンダリングの必要に応じて [Frame Count (フレーム数)] を調整します。NFOR ノイズ除去とともに使用した場合、この数はノイズ除去に使用する現在のフレームの両側 (過去と未来) のフレーム数を表します。0 から 3 のフレーム値を使用できます。
この設定は、[Denoiser Type] の設定が [Temporal] になっている場合にのみ使用されます。0 に設定した場合、NFOR は Spatial で動作します。
ログ出力を確認して、時間ノイズ除去が実行されているかを確認できます。ログには次のように表示されるはずです。
… LogNFORDenoise: Frame 322: Denoised NumOfHistory = 5 …
これがログに表示されない場合、[Enable Denoiser] ボックスにチェックが入っていることを再確認してください。これは、ポストプロセス ボリューム設定にあるノイズ除去設定をオーバーライドします。

使用されている時間サブサンプルが多すぎる場合、[Reference Motion Blur (参照モーションブラー)] をオンにすることを推奨します。そうしなければ、各時間サブサンプルがノイズ除去をトリガーし、フレームのノイズ除去に余計な時間がかかります。このアドバイスはムービー レンダリング キューにも当てはまります。

ムービー レンダリング キューを設定する
ムービー レンダリング キューとともに NFOR ノイズ除去を使用するには、以下の設定を行うこと必要があります。
- 時間ノイズ除去を使用するため、コンソール変数
r.PathTracing.SpatialDenoiser.Type
を1
に設定します。 - 必要に応じてコンソール変数
r.NFOR.FrameCount
を 0 から 3 の値に設定します。この数はノイズ除去に使用する現在のフレームの両側 (過去と未来) のフレーム数を表します。デフォルト値は 2 フレームです。 -
[Path Tracing (パス トレーシング)] カテゴリの [Post Process Volume (ポストプロセス ボリューム)] の [Denoiser (ノイズ除去)] チェックボックスを有効にします。
MRQ を使用する場合、将来的なフレームの必要性から、各ショットの最後にノイズの多い最初のフレームと不足しているフレームがあります。ムービー レンダリング パスにこの問題はありません。
その他の NFOR パラメータ
以下は、使用可能な NFOR ノイズ除去の追加のパラメータです。
- 放射輝度フィルタリング:
r.NFOR.NonLocalMean.Radiance.PatchDistance
は、放射輝度をノイズ除去する場合、非局所的平均値アルゴリズムの検索距離を設定します。検索パッチ幅と高さは、パッチ距離を 2 倍にして 1 を足したものに等しくなります。より大きな値は、ノイズ除去の滑らかさを向上しますが、二次的にレンダリング時間を増加します。デフォルト値は 9 です。r.NFOR.NonLocalMean.Radiance.PatchSize
は、非局所的平均値アルゴリズムのサイズを設定するため、パッチの幅と高さは、パッチ サイズを 2 倍にして 1 を足したものに等しくなります。デフォルト値は 3 です。値を大きくすると、滑らかさが増します。
- 特徴フィルタリング:
r.NFOR.NonLocalMean.Feature.PatchDistance
(デフォルトは 5) 。機能バッファとアルファ チャンネルのノイズ除去の強度を制御します。r.NFOR.NonLocalMean.Feature.PatchSize
(デフォルトは 3)。
- 詳細を維持するための事前分割アルベド:
r.NFORPredivideAlbedo.Offset
を0.1
に設定します。このオフセットは、ゼロで割ることによって起こる問題を回避するため放射輝度の復調前にアルベドに追加されます。これにより、フレームにより高い頻度の詳細を保持できます。シーンのノイズが多すぎる場合、より大きな値はノイズ除去の滑らかさを向上しますデフォルト値は 0.1 です。
- NFOR フレーム数:
- ムービー レンダリング キューによるオフライン レンダリングで、デフォルトで履歴に 5 フレームを使用するため、
r.NFOR.FrameCount
を2
に設定します。これには、前のフレーム 2 つ、現在のフレーム、後のフレーム 2 つが含まれます。エディタでは、フレームカウント値は以前の単一フレームのノイズ除去には常に 0 です。現在は、0 から 3 の値を使用できます。
ムービー レンダリング グラフではこのパラメータを変更してはなりません。Path tracer ノードはこの値を変更し、適切なフレームレンダリングを出力するために MRG の内部状態に合わせます。
- ムービー レンダリング キューによるオフライン レンダリングで、デフォルトで履歴に 5 フレームを使用するため、
制限事項
- ホタルはノイズ除去では削除できません。
- ノイズ除去にはある程度の量のサンプルが必要です。