This is the documentation for Enlighten.

7.12. パフォーマンス チューニング

Enlighten は、プリコンピュートの入力パラメーターにより詳細に構成でき、幅広い品質設定およびメモリ割り当て量に対応することができます。しかし、プリコンピュート パラメーターの選択を誤ると、パフォーマンスが低下します。このページでは、視覚的品質およびパフォーマンスに関するプリコンピュート パラメーターのチューニングに関する背景情報と、チューニング可能なプリコンピュート パラメーターのリストを提示します。

Enlighten の計算は、複数フレームにわたってメインとなるレンダースレッドに対し非同期で実行、またはフレームごとに固定の割り当て量で実行でき、フレームごとのレンダリング コストへの影響が無視できる程度にチューニングできます。主にプリコンピュートで生成されるデータのサイズに関して、パフォーマンスに影響を与えるパラメーターがいくつかあります。

実行時のパフォーマンスはプリコンピュートのデータ サイズと線形の関係にあり、小さいほど速くなります。これに関して最も重要な 2 つのパラメーターは、outputPixelSizeirradBudget です。前者は出力テクスチャのピクセル数に影響を与えるため、ラジオシティ計算を行う必要があるピクセル数にも影響します。後者は各ピクセルに格納されるフォーム ファクターの数に関係します。ここでは、割り当て量が低いということは、各ピクセルに関する計算が速くなるということを意味します。両方のパラメーターは、プリコンピュートの時間にも影響を与えます。

プリコンピュートのデータ サイズを最小化するには、シーンに適切なラジオシティ プロパティ間接ライティングの解像度を選択します。複雑なメッシュのライトマップ ピクセルの数を削減するには、プローブ ライティングまたは簡素化されたライトマップ UVを使用します。

また、システムとシステム依存関係も非常に重要な要素です。すべてが 1 つのシステムに含まれる場合、または各システムが他のすべてのシステムに依存している場合は、シーン全体ですべてのレイトレーシングなどを実行する必要があるため、プリコンピュートが遅くなります。シーンがジオメトリのローカル グループに分割されている場合、システム依存関係は近接するシステムにのみ設定できるため、プリコンピュートを局所的かつ速くすることができます。また、システム依存関係は実行時のパフォーマンスにも重要です。1 つのシステムのラジオシティ解決のためにメモリに保持するデータは、少なければ少ないほど良いです。

システムの規模について、単一の黄金律のようなものはありません。ストリーミングとジョブ システムがうまく連携するよう、データを小規模に保つようにしてください。たとえば、各システムが 1 秒未満で解決できるように、平均 1 から 2 MB のサイズのランタイム データにアクセスするシステムを自動または手動で作成できます。さらに、各システムを独立したノードでプリコンピュートし、独立したスレッドで解決することもできます。ここでも、最適な粒度と関連するオーバーヘッドがあります。

パフォーマンスに必要不可欠なもう 1 つの要素は、必要な場合にのみラジオシティ更新を行うこと、あるいは特定のヒューリスティックに基づきラジオシティ更新の時間を限定すること、またはその両方です。更新する対象、タイミング、頻度を割り出すためにスケジューラーを最適化するといったボトルネックへの対応に役立ちます。特に大きなシーンでは、ラジオシティを毎フレーム更新しない、さらにはレベルをロードした後はまったく更新しない場合があります。実際のラジオシティ更新のラウンドトリップ タイムは、入力ライティングがどれほど速く変化するかによります。レベルに雲のような常に変化する大気の効果などがある場合、レベル全体を 5 秒以内に更新した方が良いでしょう。リアルタイムの太陽の位置など、もっとゆっくりとした変化の場合、5 分のラウンドトリップ タイムが十分な速度でしょう。

動的な更新に必要なデータをアンロードしつつ (恐らく遠くのシステムだけに)、はるかに小さいライトマップ データをロードしたままにすることが望ましい場合があります。これにより、レベルの遠くのエリアのライティングを維持しつつ、動的な更新は行わないことが可能になります。

色々と試行して、ゲームと統合に最適な方法を見つけるのが重要です。

プリコンピュート パラメーターとパフォーマンスに関する意味合い

すべてのパラメーターの詳細については、プリコンピュート パラメーターをご覧ください。メモリ使用量の追跡および特定のパフォーマンスの問題を解決するための情報については、技術的トラブルシューティングをご覧ください。

パラメーター

ガイドライン

outputPixelSize

これは出力ライトマップのサイズを直接制御します。線形のパラメーターであるため、outputPixelSize を倍にすると、出力ピクセルの数が約 4 倍になります。Enlighten のメモリとパフォーマンスは、出力ピクセルの数に対して線形に増減します。Enlighten の出力テクスチャは間接光のみを含むため、非常に少ないピクセル数でよい結果が得られます。通常、間接光は非常に低い周波数が特徴です。

clusterSize

Enlighten が格納し、転送できる入力ライトの解像度を制御します。outputPixelSize と同様に、線形のパラメーターです。通常、outputPixelSize よりも少し大きい場合がありますが最終的な品質を大きく落とすことはありません。ただし、使用するライティング環境の種類に依存します。小さく明るい光源の場合、Enlighten が正確にとらえるためにより小さなクラスタ サイズが必要です。

irradBudget

Enlighten が格納するライティング環境に関するピクセルあたりのデータの量を制御します。従って、生成される Enlighten データはこの割り当て量と線形に近い形で増減します (ただし、他のメモリ オーバーヘッドがあるため完全には対応しません)。割り当て量が大きいほど、最終的な間接光の出力が詳細になります。しかし、Enlighten では対応したさらに多くのメモリと計算時間を消費します。一般的に、32 の最小割当量で許容できる結果が得られます。irradBudget は、16 の倍数にする必要があります。

viewVoxelMultiplier

このパラメーターは、Enlighten がどの程度プリコンピュートされたデータを圧縮するかを制御します。推奨される値は 4 です。これより低い値では通常、メモリの使用量と実行時間が大きくなりますが、それに応じて品質が上がるわけではありません。

stitchingDistance

このパラメーターは、Enlighten が潜在的なライティングのシームを平滑化する距離を制御します。この平滑化プロセスはメモリと時間を消費するため、値を小さくする必要があります。outputPixelSize と同じ値に設定することをお勧めします。

maxStitchingAngle

このパラメーターは、Enlighten が潜在的なライティングのシームを平滑化する角度の変化を制御します。先ほどと同様に、平滑化はメモリと時間を消費するため、値を小さくする必要があります。デフォルトは 0.1 ラジアン (約 5.7 度) です。値が大きい場合、Enlighten で出力を平滑化するシームのセットが増えるため、メモリと時間の消費量が大きく増加します。

edgeStitchingDistanceMultiplier

このパラメーターは、Enlighten が潜在的なライティングのシームを平滑化する距離を制御します。この平滑化プロセスはメモリと時間を消費するため、値を小さくする必要があります。従って、デフォルト値は 0.3 です。