This is the documentation for Enlighten.
11.1. グローバル イルミネーションの理解
概要
Enlighten は、「間接」ライティング効果を作成します。Enlighten を最大限活用するには、以下のいくつかの重要な概念を理解することが役立ちます。
- 「グローバル イルミネーション」と「ラジオシティ」の用語
- 直接ライトと間接ライトの違い
- 拡散反射と鏡面反射の違い
- 静的ジオメトリと動的ジオメトリの違い
このトピックは、これらの概念について簡単に説明します。
グローバル イルミネーション
ライトと物体との相互作用は複雑です。リアルタイムでシミュレートするには、近似値を得る必要があります。分かりやすく単純化すると、サーフェスにあたる光が以下のうち 1 つの動作をするとみなします。
- 光が吸収され、計算から除外される。
- 光がワールドに対して再放射される。
再放射の方向は、入力光の方向とサーフェスのプロパティに依存します。多くの場合、光はある方向に反射し、さらに別のサーフェスにあたり、その一部がまた反射します。この反射プロセスは、光が完全に吸収されるまで続きます。(一部は周囲環境に「漏れる」こともあります。)
ワールドでのライトの反射を計算すると、グローバル イルミネーションをシミュレーションしていることになります。これは、コースティクス、鏡、光沢のあるサーフェス、ラジオシティなどを含む、光の相互作用のすべての面を表す包括的な用語です。
拡散反射と鏡面反射
残念ながら、今日のハードウェアではリアルタイム GI に対応できていません。リアルタイムの効果を得るには、問題を 2 つに分けてさらに近似する必要があります。
入射光の反射を「鏡面」と「拡散」に分けることが必要不可欠です。鏡のように大部分の光を反射するサーフェスは光沢があるように見え、鏡面光沢度が高い状態です。光を吸収して再放射するサーフェスはマットに見え、見る角度による見た目の違いはありません。これは、光をあらゆる方向に再放射するからです。一方で、鏡面は主要な単一の方向に光を反射します。チョークや紙のような、ほぼマットなサーフェスは、拡散度が高い状態です。
グローバル イルミネーションでは、鏡面反射と拡散反射は双方向反射率分布関数 (BRDF) と呼ばれる単一の関数に組み合わされます。Enlighten では、これらの 2 つのプロセスを区別し、異なるアプローチを使用します。拡散光がすべてのサーフェスで反射されるようにしています。このプロセスを拡散光反射ラジオシティと呼び、Enlighten はリアルタイムでこれを更新します。
直接および間接照明
Enlighten は、シーンの直接ライティングの全般的な描写を入力として取得し、間接ライティング環境を表すテクスチャとライト プローブを計算します。Enlighten の出力テクスチャは、間接ライティングのカラーと強度、および方向に応じてカラーと強度がどのように変化するかについての描写を格納します。この情報は、間接鏡面反射と法線マッピングされたサーフェスのライティングをシェーダーで計算するために使用できます。ライト プローブは類似の情報を記録し、空間のあらゆる点でオブジェクト全体のリライトを可能にします。
Enlighten でライティングを直接ライティングと間接ライティングに分けることは、反射光と拡散光に分けることと同様に重要であり、常に意識する必要があります。具体的には、直接ライトは動的オブジェクトに影を落とすために使用でき、Enlighten で計算された間接ライティングは静的ジオメトリに間接的な柔らかい影のみを落とします。
静的および動的オブジェクト
Enlighten の最後の重要な概念は、ワールドを静的ジオメトリと動的オブジェクトに分けることです。Enlighten では、実行時に使用するデータを生成するため、静的ジオメトリをプリコンピュートする必要があるため、これが必要になります。このプリコンピュートはジオメトリのみが関係し、サーフェス プロパティは関係しません。そのため、ワールドのリライト、リテクスチャ、リカラーを動的に行うことができます。
プリコンピュートは静的ジオメトリにのみ適用されるため、ワールドのその部分だけがラジオシティに完全に寄与します。動的オブジェクトはローカルのラジオシティ条件に対応し、一貫した形でライティングされますが、間接ライティングには影響を与えません。つまり、Enlighten は静的ジオメトリからのみ間接的な柔らかい影を落とします。