Version: 5.5
より高度なリフレクションプローブの機能
クラスターレンダリング

リフレクションプローブのパフォーマンスと最適化

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

  • 6つのキューブマップの面のそれぞれを、プローブの原点に “camera” を使用して個別にレンダリングする必要があります。 プローブは、各リフレクションバウンスレベルのために別々の時間にレンダリングする必要があります(詳細は、アドバンスド リフレクション プローブの特徴 のトピックを参照してください)。 キューブマップのさまざまな mipmap レベルは、光沢があるリフレクションを可能にするために、ぼかし処理を経なければなりません。

プローブをレンダリングするために要する時間は、エディターでのベイクするワークフローや、より重要な処理にプレーヤーの実行時の性能に影響を与えます。以下にリフレクションプローブのパフォーマンスへの影響を最小限に保つためのいくつかのヒントがあります。

一般的なヒント

以下の問題は、オフラインでのベイク 実行時のパフォーマンスの両方に影響を与えます。

Resolution(解像度)

キューブマップの解像度がより高いと、そのレンダリング時間はより大きくなります。リフレクションのディテールがそれほど重要ではない場所では、解像度を低く設定することにより、プローブを最適化することができます(例えば、リフレクションオブジェクトが少ない、および/または遠くにある場合、それの詳細は自然と少なく表示されます)。詳細を目立たそうとする場合は、より高い解像度をまだ使用する必要があります。

カリングマスク

通常のカメラのパフォーマンスを向上させる標準的なテクニックは、重要でないオブジェクトをレンダリング避することを避けるために Culling Mask プロパティーを使用することです。 テクニックはリフレクションプローブためにも同様に適しています。たとえば、シーンが多くの小さなオブジェクト(例えば、岩や植物)を含んでいる場合、同じレイヤーの上にそれらをすべて入れて、その後、リフレクションでそれらのレンダリングを避けるためにカリングマスクを使うことを検討するかもしれません。

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

レンダリングのオーバーヘッドは、一般のエディターでベイクしたものに比べて、リアルタイムプローブのための方がより顕著です。アップデートは潜在的に非常に頻繁にあり、正しく管理されていない場合、フレームレートに影響を与える可能性があります。これを念頭におき、リアルタイムプローブを使用すると、プローブはできるだけ効率的にレンダリングを処理させるために、次の特性を提供します。

リフレッシュモード

Refresh Mode_は、プローブが更新されたときに選択できます。プロセッサ使用率の点で最もコストがかかるオプションは、Every Frame_ です。これは、最小限のプログラミング作業で最も頻繁にアップデートを提供しますが、すべてのプローブのために、このモードを使用する場合は、パフォーマンスの問題が発生することがあります。

モード On Awake に設定されている場合、プローブは、シーンの開始時に一度だけ実行時に更新されます。シーン(またはその一部)が実行時に設定されますが、その存続期間中に変化しない場合に便利です。

最終モード、Via Scripting は、スクリプトからプローブのアップデートを制御することができます。いくつかの努力がスクリプトのコーディングに関与していますが、このアプローチは役に立つ最適化を考慮します。例えば、渡すオブジェクトの見かけの大きさに応じてプローブを更新する可能性があります(すなわち、小さなオブジェクトや距離のある大きなオブジェクトはアップデートする価値はありません)。

タイムスライシング

上記で説明された Refresh Mode_が、Every Frame_ に設定されているとき、処理の負荷が著しくなるかもしれません。Time Slicing は、任意の時点で、いくつかのフレームにわたってアップデートのコストを分散することにより、負荷を軽減することができます。このプロパティーは、3つの異なるオプションがあります:

  • All Faces at Once では、6つのキューブマップ面は(同じフレームの上で)、すぐにレンダリングされます。しかし、その後、6の最初のレベルのミップマップのそれぞれのための、ぼかし操作は別々のフレームに行われます。残りのミップマップは、1つのフレームでぼかされ、結果は別のフレーム上のキューブマップにコピーされます。したがって、すべてのアップデートは、完了するために9つのフレームについて行います。

  • Individual Faces は、各キューブマップ面の最初のレンダリングが独自のフレームで行われるということを除いて、**All Faces at Once_ と同じように動作します(最初のフレーム上のすべての6面の代わりに)。完全にアップデートが完了するまでに14フレームかかります; このオプションは、フレームレートに最低の影響を持っています。しかし、たとえば、照明の条件が急激に変化したとき、比較的長いアップデート時間が顕著になる可能性があります(例えば、突然、ランプのスイッチを入れる等)。

  • (No Time Slicing) は、完全にタイムスライシング操作を無効にしていないので、各プローブのアップデートは1つのフレーム内で行われます。これはリフレクションが周辺のオブジェクトの外観と正確に同期することを保証しますが、処理のコストがひどく高くなるかもしれません。

その他の最適化と同様に、リフレクションがあまり重要でない場所では低品質のオプションを使用することと、詳細を伝えなければならないような場所のために、No Time Slicing オプションで保存することを検討する必要があります。

より高度なリフレクションプローブの機能
クラスターレンダリング