パルテア

どうぶつの森の美術館 〜ゲームエンジン(Unity)グラフィックス ライティング リフレクションプローブのパフォーマンス〜

リフレクション プローブのキューブマップのレンダリングには、いくつかの理由から、かなりのプロセッサ時間がかかります。

6 つのキューブマップ面はそれぞれ、プローブの原点にある「カメラ」を使用して個別にレンダリングする必要があります。

プローブは、反射バウンス レベルごとに別々にレンダリングする必要があります (詳細については、高度なリフレクション プローブに関するドキュメントを参照してください)。

キューブマップのさまざまなミップマップ レベルは、光沢のある反射を可能にするためにぼかし処理を実行する必要があります。

プローブのレンダリングにかかる​​時間は、エディターのベイク処理ワークフローに影響し、さらに重要なことに、プレーヤーの実行時のパフォーマンスに影響します。以下は、リフレクション プローブのパフォーマンスへの影響を最小限に抑えるためのヒントです。

一般的なヒント

以下の問題は、オフライン ベイクとランタイム パフォーマンスの両方に影響します。

解像度

キューブマップの解像度が高いほど、レンダリング時間が長くなります。反射の詳細がそれほど重要でない場所では解像度を低く設定することで、プローブを最適化できます (たとえば、反射オブジェクトが小さい場合や遠い場合は、当然詳細が少なく表示されます)。詳細が目立つ場所では、引き続き高解像度を使用する必要があります。

カリング マスク

通常のカメラのパフォーマンスを向上させる標​​準的な手法は、カリング マスク プロパティを使用して重要でないオブジェクトのレンダリングを回避することです。この手法は、反射プローブにも同様に有効です。たとえば、シーンに小さなオブジェクト (岩や植物など) が多数含まれている場合は、それらをすべて同じレイヤーに配置してから、カリング マスクを使用して反射でのレンダリングを回避することを検討してください。

テクスチャ圧縮

レンダリング時間を最適化し、GPU メモリの消費量を減らすには、テクスチャ圧縮を使用します。ベイクされたリフレクション プローブのテクスチャ圧縮を制御するには、ライティング ウィンドウ (メニュー: ウィンドウ > レンダリング > ライティング) を開き、環境ライティング > 反射に移動して、圧縮ドロップダウン メニューを使用します。リアルタイム リフレクション プローブはメモリ内で圧縮されず、メモリ内のサイズは解像度と HDR 設定によって異なることに注意してください。このため、リアルタイム リフレクション プローブのサンプリングは、ベイクされたリフレクション プローブのサンプリングよりもリソースを大量に消費します。

リアルタイム プローブの最適化

レンダリングのオーバーヘッドは、エディタに焼き付けたプローブよりもリアルタイム プローブのほうが一般的に大きくなります。更新は頻繁に行われる可能性があり、適切に管理しないとフレーム レートに影響する可能性があります。この点を考慮して、リアルタイム プローブには、プローブのレンダリングを可能な限り効率的に処理できるように、次のプロパティが用意されています。

更新モード

更新モードでは、プローブを更新するタイミングを選択できます。プロセッサ時間の観点から最もリソースを消費するオプションは [フレームごと] です。これにより、最小限のプログラミング作業で最も頻繁に更新されますが、すべてのプローブにこのモードを使用すると、パフォーマンスの問題が発生する可能性があります。

モードが [オン アウェイク] に設定されている場合、プローブは実行時に更新されますが、シーンの開始時に 1 回だけ更新されます。これは、シーン (またはその一部) が実行時にセットアップされ、その存続期間中は変更されない場合に便利です。

最後のモードである [スクリプト経由] では、スクリプトからプローブの更新を制御できます。スクリプトのコーディングには多少の労力がかかりますが、このアプローチでは便利な最適化が可能です。たとえば、通過するオブジェクトの見かけのサイズに応じてプローブを更新することができます (つまり、遠くにある小さなオブジェクトや大きなオブジェクトは更新する価値がありません)。

タイム スライシング

上記の更新モードが [すべてのフレーム] に設定されている場合、処理負荷がかなり大きくなる可能性があります。タイム スライシングを使用すると、更新のコストを複数のフレームに分散して、特定の時点の負荷を軽減できます。このプロパティには、3 つの異なるオプションがあります。

[すべての面を一度に] では、6 つのキューブマップ面がすぐに (同じフレームで) レンダリングされますが、6 つの第 1 レベル ミップマップのそれぞれに対するぼかし操作は、別々のフレームで実行されます。残りのミップマップは 1 つのフレームでぼかされ、その結果は別のフレームでキューブマップにコピーされます。したがって、完全な更新が完了するまでに 9 フレームかかります。
[個々の面] は、[すべての面を一度に] と同じように機能しますが、キューブマップ面の最初のレンダリングが、最初のフレームで 6 つすべてではなく、それぞれのフレームで実行されます。完全な更新が完了するまでに 14 フレームかかります。このオプションはフレーム レートへの影響が最も少ないですが、照明条件が突然変化した場合 (ランプが突然オンになった場合など)、更新時間が比較的長いことが目立つ場合があります。
タイム スライスなしを選択すると、タイム スライス操作が完全に無効になり、各プローブの更新は 1 つのフレーム内で行われます。これにより、反射が周囲のオブジェクトの外観と正確に同期されますが、処理コストが法外に高くなる可能性があります。
他の最適化と同様に、反射がそれほど重要でない場所では低品質のオプションを使用することを検討し、詳細が目立つ場所にはタイム スライスなしオプションを保存してください。


    Course

  • 日時:2024/04/01 ~ 2025/03/31
  • 名称:どうぶつの森の美術館 〜ゲームエンジン(Unity)グラフィックス ライティング リフレクションプローブのパフォーマンス〜
  • 場所:オンラインスクール
  • 料金:¥0 (消費税込)