This is the documentation for Enlighten.
2. Enlighten のしくみ
このページでは、Enlighten の基盤となっている主な概念について説明します。Enlighten での作業を開始する前に、このページを読むことをお勧めします。
Enlighten パイプライン
Enlighten パイプラインは、UE4 と統合されてリアルタイムの間接光を提供します。Enlighten パイプラインの 2 つの主なコンポーネントは、Enlighten プリコンピュートとEnlighten ランタイムです。
Enlighten プリコンピュートは、静的なアクタ (形状と位置が固定されているアクタ) に関する最適化されたランタイム データを作成します。
Enlighten ランタイムは、Enlighten ランタイム データを、エンジンが提供する直接光およびマテリアル情報とともに、入力として受け入れます。Enlighten ランタイムは、ラジオシティを解き、ライトマップ、プローブ、キューブマップの 3 種類の出力を生成します。これらの出力は、間接照明の拡散反射のみを含んでおり、多くの光源からのバウンスで構成されています。UE4 レンダラーがこれらの出力をサンプリングして、各メッシュの間接光を提供します。
ジオメトリとマテリアルカラー | 直接照明のみ | 直接および間接照明 |
ラジオシティ
Enlighten は間接光の計算にラジオシティ法に基づくアルゴリズムを採用しています。Enlighten プリコンピュートは、シーンのサーフェスをクラスタと呼ばれるチャンクに分割し、クラスタのすべてのペア間の可視性フォームファクターを計算します。Enlighten ランタイムは、ラジオシティ方程式を段階的に解きます。一度のイテレーションが光の反射一回分に相当し、イテレーション回数に制約はありません。
クラスタサイズが小さいほど間接光の精度が高まりますが、プリコンピューティングで必要になる計算は増加します。リアルタイム レンダリングでは、相対的に大きなクラスタが、最小限の計算時間で十分な精度を実現します。
クラスタに分割されたサーフェス | ラジオシティ計算の結果 | 間接光出力 |
---|---|---|
非同期更新
Enlighten のラジオシティ計算は、レンダリングをブロックすることなく、メイン レンダラーと並行して CPU 上で完全に非同期で実行されます。一般に、間接光をフル フレーム レートで更新する必要はありません。Enlighten 更新とレンダリングが切り離されているため、処理時間とライティング遅延のバランスを取ることでパフォーマンスを調整できます。これは、レンダラーが既に GPU をその上限まで押し上げていて固定フレームレート目標 (コンソールでの 60FPS、VR/AR アプリケーションでの 90FPS など) に達している場合に特に役に立ちます。
アーティスト ワークフロー
Enlighten プリコンピュートを実行する前に、ライトマップ解像度、ライトブローブ密度、および反射に使用するキューブマップの場所を変更できます。プリコンピュート後は、変更に対して即座にフィードバックを得ながら繰り返しライティングを設定することができます。その後、目的の結果が得られるまで、ライティングを調整および試行できます。