従来のゲーム向けライト(ポイントライト, ディレクショナルライト)での BRDF の利用
概要
- この記事では, 面積を持たない従来のゲーム向けライト(ポイントライト, ディレクショナルライト)においての BRDF の利用について簡単に説明します.
BRDF の例
- よく物理ベースなライティングの資料を見ると, BRDF である f = ? の式が出てくると思います.
- 例えば, 下図は完全なランバート反射の BRDF で f = cdiff / PI となっています.
- これを面積を持たない従来のゲーム向けライト(ポイントライト, ディレクショナルライト)と組み合わせて利用するにはどうしたらいいのでしょうか ?
結論
- 結論を先に書くと, 下図のように BRDF に対して PI を乗算して使って下さい.
Lo = PI * ( cdiff / PI ) * clight * dot( n, l ) = cdiff * clight * dot(n, l)
となり, 今までどおりの計算になります.
- ディフューズとスペキュラライティングの両方を含む場合だと, 下図の上側の数式ではなく, 下側の数式になります,
説明
- まず, 従来のゲーム向けライトであるポイントライト, ディレクショナルライトについては別名で Punctual Light と言います.
- またゲーム向けのライトの c_light は BRDF で使われるライティングの放射物理量の単位系ではないです.
- ゲーム向けのライトの強さの c_light については, 下図のようにそれを白い完全なランバート面に垂直に当てたときにその色が c_light になると定義されています.
- 本来, 白い完全なランバート面に垂直に当たって反射した光は 1/PI になります.
- つまり, この定義によると c_light は放射物理量の単位で表すと, PI 倍になります.
- 従ってゲーム向けのライトの強さを c_light として, ライティングの放射物理量を c_pbr_light とすると, 下のようになります.
c_pbr_light = PI * c_light
- 元のスライドは下図のものです.
より数学的な説明
- より数学的な説明については参考文献の "Physically-Based Shading Models in Film and Game Production" に書いてあります.
- 下に数学的な導出部分に該当する図だけ貼っておきます.