This is the documentation for Enlighten.
7.1.2. 入力ライティング
概要
ラジオシティを計算するため、低レベル ランタイム API がラジオシティ システムのサーフェスへの入射光の量を把握する必要があります。これは、入力ライティングと呼ばれます。
ラジオシティでは、サーフェスからのすべてのバウンスは完全な拡散反射と推定されます (これが「フル グローバル イルミネーション」ではなく「ラジオシティ」である理由です)。つまり、Enlighten の入力を計算する際、複雑なビュー依存のシェーディング (法線マップ、スペキュラー ハイライトなど) を無視できるということです。
このセクションでは、Enlighten で入力ライティングがどのように機能するかの概要について説明します。入力ライティングの実装の詳細については、 フレームごとのウォークスルーにある、入力ライティングの概念と入力ライティングの提供をご覧ください。API については、API 参考ドキュメントの 入力ライティング モジュールセクションをご覧ください。
入力ライティングの情報
Enlighten は入力ライティングを以下の 2 つの方法で表現します。
- クラスタ ライティング: 各システムの個別の入力サンプル ポイント (ダスター) のセットでのライティングです。
- 環境ライティング: 空のライティングのような、シーンの周囲の遠くの環境からの光です。
各システムの入力サンプル ポイント
Enlighten プリコンピュートの出力の 1 つは、各ラジオシティ システムの入力サンプル ポイント (「ダスター」) のグループ (クラスタ) です。
ダスターとは、ラジオシティ計算に含まれるメッシュのサーフェスにあるサンプル ポイントを指します。ライティング、シャドー、アルベド データをサンプリングするためにランタイムで使用されます。クラスタは、ローカルの一連のダスターを表します。サーフェスに到達する入射光を計算するために使用されます。この計算はダスターごとに行う必要はないため、クラスタを使用するとパフォーマンスが向上します。
実行時、これらのダスターを示すデータが「入力ワークスペース」に組み込まれます (入力ライティングの概念をご覧ください)。これらのサンプル ポイントの生データは、主に各ポイントの位置とサーフェス法線により構成されます。
エミッシブ環境
ライティングを生成するための Enlighten の各タスクは、入力として Emissive Environment オブジェクトを受け入れることもあります。エミッシブ環境とは、スカイ ボックスなどのシーンの遠くのエミッシブ ライティングを表現するデータ ブロックです。キューブマップとして表現され、各面は 1 x 1 から 64 x 64 の値をとります。プリコンピュートの間、Enlighten はこのキューブマップの正確な可視性情報を計算します。そのため、他のライティング入力がなかったとしても、適切なエミッシブ環境が出力として優れたライティングのグラデーションを生成します。
SetEnvironmentLightValues
関数は、エミッシブ環境を表現する InputLightingBuffer
オブジェクトを定義し、これが Enlighten の解決関数に入力として渡されます。
詳細については、入力ライティングの提供をご覧ください。API の詳細については、エミッシブ環境モジュールドキュメントをご覧ください。
エミッシブ環境がライティング設定の主な要素になっている場合、環境自体が高い解像度を必要としない場合にも、より高い解像度を選ぶ方が合理的になることがあります。エミッシブ環境に低い解像度を使用した場合、特に軸に平行なジオメトリで、まれにエミッシブ環境からのライティングにノイズが見られることがあります。ノイズを除去するには、少なくともフェースあたり 8 x 8 の解像度にします。