"Light Propagation Volumes in Fable Legends" @ Unreal Engine 4

  • Light Propagation Volume off

  • Light Propagation Volume : on


Memo in Japanese

  • Unreal Engine 4 でゲームを開発している "Fable Legends" の開発者が Light Propagation Volume を Unreal Engine 4 向けに実装して, それが Unreal Engine 4 に組み込まれたという流れのようです.
  • Light Propagation Volumes は元々は Crytek が開発した手法で, 動的に 1 バウンスのディフューズ間接光 を計算する手法でした.
  • 一方で, 今回 Unreal Engine 4 に組み込まれた Light Propagation Volumes はいくつか従来の手法と違いあります.
  • ( 今回の記事の内容だと正直に言うと, 実装の詳細がまだ掴みきれないのですが, 記事の内容から読み取れることについてなんとなく下に書いておきます. )
    • 3d テクスチャに書き込む SH 係数の次数が 0,1 次( RGB * 4 float)ではなく, 0,1,2 次(RGB * 9 float)になっています.
    • コンピュートシェーダでシーンをボクセル化して, セカンダリオクルージョンとライトのマルチバウンス用に利用しています.
    • セカンダリオクルージョンを使って, ディレクショナルライトやスカイライト, エミッションするマテリアルによるライティングの寄与を, LPV に書き込んでいます.
    • LPV に書き込まれた結果を ディフューズ間接光としてではなく, スペキュラ間接光としても利用しています. 下図はラフネスが滑らかなものから粗いものに変化したときのスペキュラ間接光の変化です. LPV をスペキュラ用に使える用になったのは, LPV の SH 係数を増やしたことや, 解像度が上がったことが関係してそうだと思っています.