VR でフォワード レンダリングを使用する

フォワード レンダリングを使用して VR パフォーマンスを高める方法

Windows
MacOS
Linux

現在この機能は実験的なものであり、一部の機能は期待どおりに機能しなかったり、今後改正で変更される可能性があります。

アンリアル エンジン 4 はディファード レンダラを使用するデフォルト設定なので、多様性を高め、より多くのレンダラ機能へのアクセスが保証されます。 ただし、ディファード レンダラにはトレードオフもあります。すべての VR 体験に適しているというわけではありません。 フォワード レンダリング は、レンダリング パスが速くなることで基準値も上がるので、VR プラットフォーム上でのパフォーマンスが良くなる場合があります。 また、速くなるだけではなく、提供されているアンチ エイリアシング オプションを使うとビジュアルも一層きれいになります。

フォワード レンダリングを有効にする

フォワード シェーディング レンダラを有効にするには、以下の操作を行います。

  1. [Edit (編集)] メニューで、[Project Settings (プロジェクト設定)] を開きます。

  2. 左欄の [Rendering] タブを選択し [Forward Shading] カテゴリを探します。

  3. [Forward Shading] を有効にします。

EnableForwardShading.png

エディタを再起動するように促されます。再起動後、フォワード レンダラのオプションと機能が使えるようになります。

Multisample Anti-Aliasing を有効にする

Multisample Anti-Aliasing (MSAA) を使用するには以下の操作を行います。

  1. [Edit (編集)] メニューで、[Project Settings (プロジェクト設定)] を開きます。

  2. 左欄の [Rendering] タブを選択し [Forward Shading] カテゴリを探します。

  3. Anti-Aliasing Method プロパティを MSAA に設定します。

EnableMSAA.png

フォワード レンダリングは、マルチサンプル アンチエイリアシング (MSAA) とテンポラル アンチエイリアシング (TAA) の両方をサポートしていますが、ジオメトリ エイリアシングとスペキュラ エイリアシングの両方を除去するため、ほとんどのケースで TAA が好まれます。 ただし VR では、ヘッド トラッキングでサブピクセルが絶えず移動するため不必要なぼやけが発生するので、MSAA が正しい選択かもしれません。 MSAA を使用するプロジェクトでは、スペキュラ エイリアシングを軽減するためのコンテンツのビルドをお勧めします。 さらに、Normal to Roughness 機能を使うと、詳細な法線マップからスペキュラ エイリアシングを削減し、スタティックメッシュ用の自動 LOD 生成機能により遠くのメッシュの形状を平坦にして、小さなトライアングルからのエイリアシングを削減できます。

我々のテスト結果では、TAA の代わりに MSAA を使った場合、GPU フレームが約 25% 増加しました (値はコンテンツによって変わります)。

以下は、Temporal AA を有効にした場合と 4X MSAA を有効にした場合の例です。

With Temporal AA

With 4X MSAA

コンソール変数 r.MSAACount を使って、ピクセルごとに計算する MSAA サンプル数を調節し、r.MSAACount 1 で MSAA を無効にできます。 r.MSAACount 0 を代入すると Temporal AA を使用する設定に戻ります。アンチエイリアシング メソッドとの切り替えが簡単になります。

パフォーマンスと機能

ディファード レンダラからフォワード レンダラへ切り替により、プロジェクトのパフォーマンスが改善する場合があります。

コンテンツによっては、ディファード レンダリングよりもフォワード レンダリングの方が速い場合があります。ほとんどのパフォーマンスは、マテリアルごとに機能を無効にすると改善します。 マテリアルが高品質の反射を選択していない限り、最も近い反射キャプチャのみがデフォルトでパララックスなしで適用されます。また、Height Fog (高さフォグ) は頂点ごとに計算され、それを有効にするマテリアルのみに Planar Reflection が適用されます。

ForwardShading.png

エピックの新しい VR ゲーム Robo Recall ではこれらのオプションを使用して、NVIDIA 970 GTX でのフォワード レンダラがディファード レンダラよりも約 22% 速くなりました。

ExampleImage.png

フォワード レンダラは、ライトと反射キャプチャを視界外のスペースグリッドへのカリング処理で行われます。その後で、フォワード パスの各ピクセルが影響を与えているライトと反射キャプチャをイタレートして、マテリアルを共有します。 Stationary light (固定ライト) の動的シャドウは予め計算されて、スクリーン空間シャドウ マスクのチャンネルにパックされ、オーバーラップする 4 つの Stationary light (固定ライト) 限界部分を強化します。

ディファード レンダラからフォワード レンダラへ切り替えた時には、アンリアル エンジンの パフォーマンスおよびプロファイリング ツールを使ってゲームのパフォーマンスを必ず評価してください。 特に GPU プロファイリング の GPU 負荷の詳細、およびプロファイリング エフォートで補助するための Stat コマンド の使用場所に注目してみると良いでしょう。

現在サポート対象の機能

現在サポート対象の機能は以下のとおりです。

  • 事前計算された背景のシャドウでブレンドするムーバブル オブジェクトの動的シャドウを含む Stationary Lights (固定ライト) をフルサポート。

  • 視差補正で複数の反射キャプチャをまとめてブレンド処理

  • 部分的なシーンの平面反射を反射キャプチャに合成

  • DBuffer デカール

  • ライティングとスカイライトの事前計算

  • 任意の数のシャドウなし Movable Light (可動ライト)

  • カプセルシャドウ

  • マスク付マテリアルの Alpha To Coverage

  • インスタンス化されたステレオとの互換性

  • 最高 4 つまでシャドウキャスト Movable Light (可動ライト)

  • シャドウ キャスト ライト上のライト機能

周知の問題とよくある質問

フォワード レンダラの使用中は、以下の機能は サポートされません:

  • Screen 空間技術 (SSR、SSAO、Contact Shadows)。

  • 動的シャドウのついた半透明

  • Stationary Light (固定ライト) から背景シャドウをかぶせた半透明

  • D-Buffer デカールおよびモーション ブラーへの MSAA の適用

以下は、フォワード レンダラの実験版を使用した場合によくある質問 / 問題点です。

  • フォワード レンダラに切り替えたらマテリアルが壊れてしまいました。GBuffer シーン テクスチャに何か問題があるのでしょうか?

    • フォワード レンダラでテクスチャ サンプリングのため GBuffer へはアクセスできません。ディラード レンダラのみになります。

  • フォワード レンダリングはディファード レンダリングよりもテクスチャ サンプリングが少なくなりますか?

    • フォワード レンダラはすべての機能が 1 つのシェーダーに入っているので、マテリアルに使用できるテクスチャ サンプリングが少なくなります。

    • シェーダー サンプルを使えば、通常この問題を解決することができます。

  • なぜ MSAA では Atmospheric Fog のサンプルが見つからないのでしょうか。

    • Atmospheric Fog では MSAA をまだ正しく処理しません。

    • Height Fog の場合、Vertex Fogging を使えばこの問題を回避できます (フォワード シェーディングを有効にするとデフォルトで有効になります)。

    • つまり、Forward BasePass で計算されてから正しくアンチエイリアシングを行います。

    • Atmosphere の計算には、分解処理されたシーン深度の Deferred Pass がまだ使われるので、正しいアンチエイリアシングが行えません (今後のアップデートで解決したいと思っています)。

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信