This is the documentation for Enlighten.

11.2. Enlighten の設計原則


概要

我々は Enlighten の開発を通して、パフォーマンスへの影響を最小限に抑え、最高の視覚的品質を得られるよう、適切なトレードオフの選択に努めてきました。静的ジオメトリからの間接拡散ラジオシティに集中することにより、対応可能なランタイム コストで最大の視覚的品質の上昇を開発者に提供できると考えています。

このドキュメントでは、Enlighten に採用された思想の一部を示し、API と SDK を具体化したトレードオフと決定の一部についても説明します。

Enlighten がシミュレートするのは拡散ラジオシティのみ

Enlighten は、すべてのサーフェスが拡散的にライトを反射するとみなします。つまり、すべての方向に光を放射するということです。これには以下のようなさまざまな理由があります。

  • Enlighten がインタラクティブなフレームレートで実行できるようになる。
  • グローバル イルミネーションに関して、ラジオシティが唯一の真のグローバル効果である。拡散光の反射だけをシミュレーションした場合でも、カラー ブリード、エリア ライト、ソフトシャドウ、その他多くの効果を実現できます。
  • Enlighten が生成するライティングにより、鏡面のような効果を実現することができる。これは鏡面を取り扱う際の鍵となります。グローバルにラジオシティを計算すれば、これを使ってローカルで鏡面反射オブジェクトを再度ライティングできます。これによって光沢を表現でき、ワールドに正しく組み込むことができます。ここでの主要な近似は、ラジオシティ用に光沢のあるサーフェスが拡散エミッターとしてモデリングされていることですが、実際には適切な近似になります。

簡単に言えば、Enlighten はラジオシティ ソリューションであると同時に、鏡面反射光から得られる優れたスペキュラー ハイライトをサポートしています。つまり、Enlighten は、純粋なラジオシティ ソリューションと完全に正確なグローバル イルミネーション ソリューションの中間であり、ゲームのライティングのニーズを満たすことに注力したものです。

Enlighten は静的ジオメトリを扱う (ただし動的オブジェクトのリライトが可能)

Enlighten にはプリコンピュート ステージが組み込まれており、静的ジオメトリからどのように光が反射するかをシミュレートします。静的ジオメトリの制限は、当初考えたよりも大きくありません。そのようなモデルに、破壊の形式を組み込むことは十分に可能です。以下に例を示します。

  • 破壊された壁の効果は、外のワールドを取り込み、それ壁に投影するとリアルにモデリングできます。その後、部屋は外から光が入ってきたかのように明るくなります。
  • ワールドにある静的ジオメトリのステートの数が限られている場合、各ステートに対して 1 回のプリコンピュートを実行できます。これは、破壊の「前」と「後」に効果があります。