従来のゲーム向けライト(ポイントライト, ディレクショナルライト)での BRDF の利用

概要

  • この記事では, 面積を持たない従来のゲーム向けライト(ポイントライト, ディレクショナルライト)においての BRDF の利用について簡単に説明します.

BRDF の例

  • よく物理ベースなライティングの資料を見ると, BRDF である f = ? の式が出てくると思います.
  • 例えば, 下図は完全なランバート反射の BRDF で f = cdiff / PI となっています.

  • これを面積を持たない従来のゲーム向けライト(ポイントライト, ディレクショナルライト)と組み合わせて利用するにはどうしたらいいのでしょうか ?

結論

  • 結論を先に書くと, 下図のように BRDF に対して PI を乗算して使って下さい.


  • 例えば, 先ほどの完全ランバート反射のディフューズの BRDF を使う例だと,
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" に書いてあります.
  • 下に数学的な導出部分に該当する図だけ貼っておきます.



参考文献