"All-Frequency Rendering of Dynamic, Spatially-Varying Reflectance のメモ

概要

  • This article is fully written in Japanese. この記事は日本語で書かれています.
  • "All-Frequency Rendering of Dynamic, Spatially-Varying Reflectance”SIGGRAPH ASIA 2009 のメモなので, 説明はざっくりしたものになっています.


参考文献

  • "All-Frequency Rendering of Dynamic, Spatially-Varying Reflectance” Jiaping Wang, Peiran Ren, Minmin Gong, John Snyder, Baining Guo. SIGGRAPH ASIA 2009

マイクロファセットについて

  • 法線マップのように通常のマクロな法線を n としたときに, それよりも細かい表面をマイクロファセットと言い, その法線を マイクロファセットの法線 m と言います.
  • マイクロファセットの分布関数 D(m) について - OLD hanecci’s blog : 旧 はねっちブログ
  • 実際にスペキュラシェーディングの計算に使う際には, ある方向に対してどのぐらいの割合のマイクロファセットが向いているか ? を求める必要があります.
  • 従って, ここでマイクロファセットの分布を確率分布として表現することを考えます.
  • 今回は確率分布として基本的なものの 1 つである正規分布(ガウス分布)を使って, マイクロファセットの法線の分布関数 D(m) を表現します.

球面ガウス関数について


p : ローブの軸の方向. 2 次元のパラメータ(θ,φ)
λ : ローブの鋭さ. 1 次元のパラメータで 0-∞.
μ : ローブの振幅. 単色の場合は 1次元のパラメータ. カラーの場合は RGB の 3次元のパラメータ.
v : 球面ガウス関数の結果を求める方向. 2 次元のパラメータ(θ,φ)


球面ガウス関数の見た目


球面ガウス関数内積


外積


球面ガウス関数の線形和


球面ガウス関数の線形和の見た目


球面ガウス関数の線形和を回転させる場合

分離

BRDF について

  • BRDF(4D) : 入射ベクトル(θ,Φ), 出射ベクトル(θ,Φ)

  • Spatially Varying BRDF (6D) : 入射ベクトル(θ,Φ), 出射ベクトル(θ,Φ), 表面の点(x,y)

  • NDF (2D) : h ハーフベクトル(θ,Φ)

  • Spatially Varying NDF (4D) : h ハーフベクトル(θ,Φ), 表面の点(x,y)

BRDF を球面ガウス関数で表現する

BRDF をディフューズ BRDF と スペキュラ BRDF に分離


マイクロファセットのスペキュラ BRDF


Cook-Torrance の NDF を球面ガウス関数で表現する場合


NDF を単一の球面ガウス関数で近似する場合

ライトも球面ガウス関数で表現する

ポイントライトの場合


ディレクショナルライトの場合


無限遠方の全方向ライト(ディフューズ用)


無限遠方の全方向ライト(スペキュラ用)

可視性

  • SSDF で表現します. 今回は記述を省略します.詳しくは元の参考文献を見て下さい.

ランタイム


ディフューズシェーディングとスペキュラシェーディングの分離


ディフューズシェーディング


スペキュラシェーディング