Japanese memo of H-Basis in "Efficient Irradiance Normal Mapping"
参照
- "Efficient Irradiance Normal Mapping" I3D 2010
- "RADIOSITY, DX11 STYLE" @ DanzerZone (The Order1886 のプログラマ)
メモ
概要
- メモで結構内容が大雑把なので, 詳細は元の資料を参考にしていただけると助かります.
- ゲームではよく SH(Spherical Haromonics)の 0,1,2 次の係数を使って, 全球を対象とした低周波のライト情報やオクルージョン情報をエンコードすることを行います.
- しかし, 不透明のメッシュに対しては法線を中心とした半球を考慮すれば十分です.
- そこでこの研究では, SH(Spherical Haromonics)を元にしながら半球球面調和関数(Hemispherical Harmonics)の基底として H-Basis を提案し, それを使うことで表現に必要な float の係数を減らしたり, エンコード時の計算誤差も減らす方法を紹介しています.
- 半球球面調和関数(Hemispherical Harmonics)の基底は何種類もあるのですが, 今回は仕様に合った H-Basis という基底が提案されています.
- H-Basis は最近だと, Japanese memo of "Crafting a Next-Gen Material Pipeline for The Order:1886" @ GDC2014 - OLD hanecci’s blog : 旧 はねっちブログ のライトマップや Directional AO に使われていました.
SH の場合
- 下図の左側の 0,1,2 次の SH だと, 必要な基底の係数は 9 (1 + 3 + 5 )個です.
H-Basis について
- 下図は H-Basis の基底(H^1, H^2, H^3, ..., H^6)の式と図.
- H-Basis の 0,1 次については必要な基底の係数が 4 個(1 + 3 )で, これを H4 と呼びます. (SH の0,1次の基底だと同じ 4係数)
- また H-Basis の 0,1,2 次について必要な規定の係数は 6 個(1 + 2 + 3)で, これを H6 と呼びます. (SH の0,1,2次の基底だと 9係数なので, H6 の方が係数が少ない)
見た目の比較と誤差
- Ground truth が参照用の正しいもの.
- Half-Life 2 は Radiosity Normal Map の基底.
- 今回の提案方法はH4(H-Basis 0,1次) や H6(H-Basis 0,1,2次).
- Makhotkin Basis と Zernike Basis は比較用の基底でいまいちのもの.
- SH 3 Bands は SH の 0,1,2 次バージョン.
- 下図は誤差の比較. H6 でも数値誤差が少ないので十分.