This is the documentation for Enlighten.

6.4.4. アルベドとエミッシブ テクスチャ


ライトマップから間接光を受けるサーフェスに静的アルベドとエミッシブデータを指定する別の方法としてアルベド テクスチャとエミッシブ テクスチャを作成できます。

この手法では、ライトマップを共有するディテール メッシュのアルベド カラーとエミッシブ カラーを考慮します。実装はサンプル ポイントの手法と非常に似ており、類似した結果になります。

テクスチャの生成

永続ランタイム データを使用して、各ラジオシティ システムのアルベド データとエミッシブ データを作成します。

  1. GetTextureSize を呼び出し、システムの最終的なアルベド テクスチャとエミッシブ テクスチャのサイズを確認します。
  2. システムのアルベド テクスチャとエミッシブ テクスチャを作成し、レンダラーのマルチ レンダリング ターゲットとしてバインドします。
  3. システムの各インスタンスに対し、特別な頂点とピクセル シェーダーを備えたマテリアルでメッシュを描画します
    1. 頂点シェーダーが Enlighten ライトマップ UV 座標を出力します
    2. ピクセル シェーダーがアルベド カラーとエミッシブ カラーをレンダリング ターゲットに出力します
  4. アルベドとエミッシブのテクスチャを CPU がアクセスできるメモリにリード バックします。
  5. アルベド テクスチャとエミッシブ テクスチャで InitialiseEmissiveBufferFromTexture と InitialiseAlbedoBufferFromTexture を呼び出します。

これらのテクスチャがシステムのライトマップのディメンションと対応するよう、TextureResolutionScale::Fullを使用することをお勧めします。異なるスケールを使用する場合、GetTextureSize を使用してテクスチャのサイズを計算します。

ドキュメントで詳細を確認し、InitialiseAlbedoBufferFromTexture と InitialiseEmissiveBufferFromTexture で想定されるカラーをカラー空間に指定します。

リニア カラー空間からガンマ 2 カラー空間に変換するには、リニア カラー空間の値の平方根をとります。

アンチ エイリアス

Enlighten ライトマップは、個別のメッシュの三角またはマテリアルのテクセルと比較すると、テクセル解像度が極めて低くなっています。ライトマップ解像度でメッシュを直接テクスチャにレンダリングすると、明らかなエイリアシング アーティファクトがいくつか発生します。

これを避けるには、より高い解像度のバッファにレンダリングし、ライトマップ解像度にダウンサンプリングします。少なくともライトマップ テクスチャ解像度の 4 倍でバッファにレンダリングすることをお勧めします。

ディテール メッシュ

ディテール メッシュのアルベド カラーとエミッシブ カラーを含めるには、アルベド テクスチャとエミッシブ テクスチャを生成するときに、システムのインスタンスに投影するディテールメッシュを含めます。

システムのすべてのインスタンスをレンダリングした後で、すべてのディテール メッシュをテクスチャにレンダリングすることをお勧めします。これは簡単なアプローチすが、通常十分な結果が得られます。