Scene Optimisation (シーンの最適化)
このトピックでは、RenderStream で使用する Unreal Engine シーンの構成と最適化に関するヒントとベストプラクティスを扱います。プロジェクトをステージに持ち込む前に、Verification Checklist を使用することを推奨します。
アルファとフロントプレート
Section titled “アルファとフロントプレート”Unreal Engine アセットでアルファを使用する際のヒント:
- Designer で、RenderStream Layer の BlendMode を Premult Alpha に設定します。
- ポストプロセスを通してアルファを保持するには、Project Settings › Rendering でアルファチャンネル出力を有効にします。
- Unreal Engine 5.4 以前: Post-Processing で、Enable alpha channel support in post processing(
r.PostProcessing.PropagateAlpha)を Allow through tonemapper(2)に設定します。Epic はこの設定を実験的機能としています。Temporal AA、Motion Blur、Circle Depth of Field でのみ動作し、separate translucency が無効になります(Rendering Settings を参照)。 - Unreal Engine 5.5 以降: Default Settings で Alpha Output を有効にします(Unreal Engine 5.5 リリースノート を参照)。
- Unreal Engine 5.4 以前: Post-Processing で、Enable alpha channel support in post processing(
- シーンカラーバッファーにアルファチャンネルを持たせるため、
r.SceneColorFormatが4(64 ビット浮動小数点 RGBA)になっていることを確認します。上記のとおり、アルファ出力も有効にする必要があります。
アルファが期待どおりに通らない場合は、トラブルシューティングを参照してください。
フロントプレートのカメラとチャネルについて:
- フロントプレートのカメラを Default Visibility Hidden に設定し、フロントプレートに表示するコンポーネントをすべて Force Visible セクションに追加します。
- 各フロントプレートチャネルの Show Flag Settings で、Fog と Atmosphere を無効にします。これにより、そのチャネルではこれらがレンダリングされなくなります。フォグとスカイアトモスフィアのアクターはシーンに残るため、バックプレートでは引き続きレンダリングされます。
- フロントプレートのチャネルでは、スカイドームやフルフレームエフェクトを使用しないでください。
分割レンダリングの制限事項
Section titled “分割レンダリングの制限事項”Unreal Engine のデフォルトのエフェクトには、Cluster プール内でフレームがレンダーノード間に分割されたときに問題を起こす可能性があるものがあります。以下の表は、問題が起きる理由ごとにエフェクトを分類しており、その理由が対処方法も示しています。これは網羅的なリストではありません。
RenderStream の Channel Definition コンポーネントには、Scene Capture の下に Show Flag Settings のリストがあり、被写界深度、ブルーム、モーションブラーなどの個々の Unreal show flag をチャネルごとに有効/無効にできます。
| 種類 | エフェクト | 問題が起きる理由 | 対処方法 |
|---|---|---|---|
| 画像全体を基準とするもの | Vignette、Chromatic Aberration、Lens Flare、Auto Exposure | 画像の端、中心、または全体の明るさを基準に計算されます。各レンダーノードは自身のタイルしか持たないため、そのタイルをフレーム全体であるかのように扱ってエフェクトを適用することがあります。 | Show Flag Settings でそのチャネルに対して無効にします。オートエクスポージャーについては手動露出を使用します。 |
| ブラーおよびスクリーンスペース | Depth of Field、Bloom、Motion Blur、Screen Space Global Illumination (SSGI)、Screen Space Ambient Occlusion (SSAO)、Screen Space Reflections (SSR) | 近隣のピクセルや画面上に見えているものをサンプリングするため、タイルの境界付近では他のノードにあるものが欠けます。 | パディングとオーバーラップで軽減できる場合がありますが、ケースバイケースで評価してください。それ以外の場合は、そのチャネルに対して無効にします。グローバルイルミネーションについてはグローバルイルミネーションを参照してください。 |
| テンポラル | Temporal Anti-Aliasing (TAA)(Temporal Upsampling を含む)、Temporal Super Resolution (TSR)、Ray tracing(デノイザー) | 各フレームを過去のフレームから構築しますが、その履歴はタイルの境界付近でノード間で異なることがあり、ゴーストや目に見えるシームが生じます。 | これらのアーティファクトが発生する場合は、テンポラルではないアンチエイリアシング手法を使用します。FXAA、またはプロジェクトがフォワードレンダラーを使用している場合は MSAA です。レイトレーシングについては、ベイクされたライティングを検討してください。 |
分割されたフレーム間のシーム
Section titled “分割されたフレーム間のシーム”フレームがレンダーノード間で分割されている場合、各ノード自身のビューから計算される要素は分割された部分ごとに異なることがあり、接合部にシームが現れます。
Post Process Volume
Section titled “Post Process Volume”デフォルトでは、Unreal Engine がマップの PostProcessVolume の露出を自動的に設定するため(オートエクスポージャー)、分割されたフレームの各部分で露出が異なることがあります。露出を修正するには:
- PostProcessVolume で Lens、続いて Exposure を展開します。
- Metering Mode を Manual に設定します。
- Exposure Compensation を、シーンに適した値または Float Curve で調整します。
Camera Actor および CineCamera Actor は、Post Process Volume の露出設定を上書きできます。これらの露出も手動に設定し、シーンをレンダリングするすべてのカメラで Apply Physical Camera Exposure トグルを同じ設定にしてください。トグルを合わせるだけでは露出が一致する保証はありません。カメラのその他の露出設定も一致させる必要があります。
グローバルイルミネーション(Lumen と SSGI)
Section titled “グローバルイルミネーション(Lumen と SSGI)”Lumen は、サーフェスキャッシュとディスタンスフィールドにフォールバックする前に、近距離のディテールにスクリーンスペーストレースを使用します。タイルレンダリングでは、これらのスクリーントレースが各タイルの境界で切り取られ、シームの原因となることがあります。
Screen Space Global Illumination (SSGI) は、各タイル自身のバッファー内のピクセルからのみバウンスライティングを計算するため、タイルの端より外側のデータを持ちません。これにより、ライティングの急激な途切れ、バウンスライトの欠落、分割線に沿った目に見えるシームが生じることがあります。上記の分割レンダリングの制限事項の表に含まれているのはこのためです。
ベイクされたライティングはカメラのビューに依存しないため、これら両方の問題を回避できます。Verification Checklist のライティングに関する推奨事項を参照してください。
トラブルシューティング
Section titled “トラブルシューティング”- アルファが通らない: RenderStream Layer 内でポストプロセスエフェクトを 1 つずつ非表示にして原因を特定し、上記のアルファ設定を確認します。Unreal Engine 5.4 以前では、Epic のアルファ設定は Temporal AA でのみ動作するため、FXAA や MSAA に切り替えるとアルファに影響することがあります。
- アルファのエッジが粗い、または欠けている: Post Processing と Effects のスケーラビリティ設定で High、Epic、Cinematic を試し、その後 GPU のワークロードが目標のフレームレートを満たしているか確認します。
- レンダーノードの出力が切り取られる、拡大縮小される、または位置がずれる: レンダーノードの Windows ディスプレイスケーリングが、ネイティブ解像度に対して 100% になっているか確認します。インターフェースのスケーリングが必要な場合は、2 台目のモニターをレビュー画面として使用します。
- アルファを有効にした後やトランスポート構成を変更した後、コンテンツの表示に時間がかかる: Unreal アセットのシェーダーが再コンパイル中であり、進行状況は RenderStream Layer のワークロードステータスに表示されます。共有 Derived Data Cache を使用すると、レンダーノードでのコンパイル時間を短縮できます(DDC Setup を参照)。
- 分割されたフレームの各部分の間にシームが出る: 分割されたフレーム間のシームを参照してください。
RenderStream と Unreal Engine のその他の問題については、UE RenderStream Troubleshooting を参照してください。
Unreal Engine のレンダリング設定、視覚効果、パフォーマンス最適化の詳細については、次の Epic Games のドキュメントを参照してください。
- Rendering Settings: アルファチャンネルのサポートやポストプロセスを含む、プロジェクトレベルのレンダリング設定を構成します。
- Viewport Show Flags: フォグ、アトモスフィア、被写界深度、モーションブラーを含む、個々のレンダリングエフェクトを有効/無効にします。
- Anti-Aliasing and Upscaling: TAA、TSR、FXAA、MSAA を含む、テンポラルおよび非テンポラルのアンチエイリアシング手法を比較します。
- Auto Exposure: 手動露出、露出補正、物理カメラ露出を構成します。
- Lumen Technical Details: Lumen のスクリーントレースとグローバルイルミネーションの手法を理解します。
- Unreal Insights: Unreal Engine のパフォーマンスをプロファイリングし、ボトルネックを調査します。
- Guidelines for Optimizing Rendering for Real-Time: パフォーマンスのボトルネックを特定し、リアルタイムレンダリングのワークロードを最適化します。
RenderStream プロジェクトをステージに持ち込む前に実行するチェックについては、Verification Checklist も参照してください。