Microfacet Modelについて01

MicrofacetModelRefraction

はじめに

Microfacet Model for Refraction through Rough Surfacesについてまとめます. 論文自体はimportance samplingについでですが, microfacetの要約が簡潔にまとまっていると思います.

Microfacet Model for Refraction through Rough Surfaces

Microfacet Theory

BSDF (Bidirectional Scattering Distribution Function)

BSDFとは, 入射方向i\boldsymbol{i}からの放射照度と出射方向o\boldsymbol{o}へ放射される放射輝度の比率である. fs(i,o,n)f_{s}(i, o, n)と表し, n\boldsymbol{n}はローカルサーフェスの法線である.
反射と透過に分割した場合, それぞれBRDR, BRTFと呼ばれる. すなわち, fs=fr+ftf_{s} = f_{r} + f_{t} である.

定義

  • 放射束 (radiant flux) (WW): ある面を単位時間あたりに通過する放射エネルギー.
  • 放射照度 (irradiance) (W/m2W/m^{2}): 単位時間あたりに照射される, 面積あたりの放射エネルギー.
  • 放射輝度 (radiance) (W/sr/m2W/sr/m^{2}): ある点からある方向へ放出される放射束.

Microfacet Models

マイクロサーフェスの細かな凹凸は, 完全な反射(透過)特性を持った微小平面の集合として表現する. マイクロサーフェスの特徴は2つの統計量を用いて, マクロサーフェスとして簡略化される. 2つの統計量は, マイクロファセット(の法線)の分布DDと幾何減衰関数GGである. 一般的には一度の反射(透過)だけ扱う. 次にDDGGを定義する.
enter image description here

Microfacet Distribution Function DD

マイクロファセットの法線分布D(m)D(m)を定義する.
方向mm上の微小立体角をdωmd\omega_{m}, マクロサーフェス上の微小面をdAdAとすると, D(m)dωmdAD(m)d\omega_{m}dAは, 法線が立体角方向と一致するマイクロファセットの合計の面積を表す. DDは単位1/ステラジアンの密度関数である.
DDは少なくとも以下を満たす.

  • 0以上
    • 0D(m)0 \leq D(m) \leq \infty
  • マイクロファセットの総面積は少なくとも, 対応するマクロファセットの面積に等しい
    • 1D(cm)dωm1 \leq D(cm)d\omega_{m}
  • マイクロファセットの符号付き投影面積は, 任意の方向vvのマクロサーフェスの投影面積を等しい
    • (vn)=D(m)(vm)dωm(v \cdot n) = \int D(m)(v \cdot m)d\omega_{m}
    • v=nv=nの場合,
      • 1=D(m)1 = \int D(m)

Shadowing Masking Function G

幾何減衰関数G(i,o,m)G(i,o,m)は, マイクロファセット上の法線mmの点が入出射両方向から可視である割合を表す.
遮蔽はgrazing angleや極度に荒いサーフェスでしか強く表れないが, エネルギー保存測を満たすために必要である
enter image description here
GGは以下を満たす.

  • 0以上1以下
    • 0G(i,o,m)10 \leq G(i,o,m) \leq 1
  • 入出射方向に対して対象
    • G(i,o,m)=G(o,i,m)G(i,o,m)=G(o,i,m)
  • 表面側から裏面は見えない(その逆も同様)
    • G(i,o,m)=0in(im)(in)or(om)(on)0G(i,o,m)=0 in (i \cdot m)(i \cdot n) \leq or (o \cdot m)(o \cdot n) \leq 0

マイクロサーフェスBSDFの積分

BSDFの積分は, マイクロサーフェスの可視部分からの放射を積分する. 放射の割合はマイクロサーフェスのBSDFfsmf_{s}^{m}によって決まり, 可視部分の割合はDDGGの積で決まる.
放射照度と放射輝度は, それぞれ入射と出射方向への投影面積で計算される.
(1)fs(i,o,n)=iminfsm(i,o,m)omonG(i,o,m)D(m)dwmf_{s}(i,o,n) = \int |\frac{i \cdot m}{i \cdot n}|f_{s}^{m}(i,o,m)|\frac{o \cdot m}{o \cdot n}|G(i,o,m)D(m)dw_{m} \tag{1}
マイクロサーフェスが局所的に滑らかと仮定すると, fsmf_{s}^{m}は, 理想的な鏡面反射と理想的なSnellの法則に従う透過の, 総和とFresnel項FFで決まる減衰の乗算になる.

マイクロサーフェススペキュラー BSDF

多くのマイクロファセットモデルが理想のスペキュラー反射を仮定する. このとき, マイクロサーフェスは極小の鏡の集まりのように振る舞い, この極小の鏡のことをマイクロファセットと呼ぶ.
一般化したスペキュラーBSDFは, 入射方向iiからのエネルギーを, ひとつの方向ssへ, ρ\rhoの割合いで放射する関数になる. ρ\rhossは, iimmの関数になる.
(2)fsm(i,o,m)=ρδωo(s,o)omf_{s}^{m}(i,o,m) = \rho\frac{\delta_{\omega_{o}}(s,o)}{|o \cdot m|}\tag{2}
δωo\delta_{\omega_{o}}はディラックのデルタ関数で, s=0s=0\infin, それ以外はゼロである.
任意のiiooで, 高々ひとつのマイクロサーフェス法線で反射すると仮定すると, その法線はh(i,o)h(i,o)で計算できる. この法線をハーフディレクションと呼ぶ.
(2)(2)をハーフディレクションhhで書き直すと,
(3)fsm(i,o,m)=ρ(i,m)δωm(h(i,o),m)omωhωof_{s}^{m}(i,o,m)=\rho(i,m)\frac{\delta_{\omega_{m}}(h(i,o),m)}{|o \cdot m|}||\frac{\partial \omega_{h}}{\partial \omega_{o}}|| \tag{3}
ωhωo||\frac{\partial \omega_{h}}{\partial \omega_{o}}||はヤコビ行列の行列式で, 省略してヤコビアンと呼ばれる. ヤコビアンは多変量の微分であり, ωh\omega_{h}ωo\omega_{o}に対する微分値である.

理想的な反射frmf_{r}^{m}

理想的な反射を考えたとき, ハーフベクトルhrh_{r}は,
hr=hr(i,o)=hrhrh_{r}=h_{r}(i,o)=\frac{\vec{h_{r}}}{||\vec{h_{r}}||}
hr=sign(in)(i+o)\vec{h_{r}}=sign(i \cdot n)(i+o)
ωhrωo=ohrhr2=14ohr||\frac{\partial \omega_{h_{r}}}{\partial \omega_{o}}|| = \frac{|o \cdot h_{r}|}{||\vec{h_{r}}||^{2}}=\frac{1}{4|o \cdot h_{r}|}

enter image description here

ρ\rhoをフレネルFFにすると, 式(3)(3)は,
(4)frm(i,o,m)=F(i,m)δωm(hr,m)4(ihr)2f_{r}^{m}(i,o,m)=F(i,m)\frac{\delta_{\omega_{m}}(h_{r},m)}{4(i \cdot h_{r})^{2}} \tag{4}
ヤコビアン項があるため, frmf_{r}^{m}ihr|i \cdot h_{r}|に反比例に減少する. これは現実に即している.

理想的な透過ftmf_{t}^{m}

スネルの法則の屈折率をηi\eta_{i}, ηo\eta_{o}とすると,

(5)ht=ht(i,o)=htht where ht=(ηii+ηoo)h_{t}=h_{t}(i,o)=\frac{\vec{h_{t}}}{\vec{||h_{t}}||} \ where \ \vec{h_{t}} = -(\eta_{i}i + \eta_{o}o) \tag{5}

ηiηo\eta_{i} \neq \eta_{o}と仮定する. 対応するヤコビアンは,

(6)ωhtωo=ηo2ohtht2=ηo2oht(ηi(iht)+ηo(oht))2||\frac{\partial \omega_{h_{t}}}{\partial \omega_{o}}|| = \frac{\eta_{o}^{2}|o \cdot h_{t}|}{||\vec{h_{t}}||^{2}}=\frac{\eta_{o}^{2}|o \cdot h_{t}|}{(\eta_{i}(i \cdot h_{t}) + \eta_{o}(o \cdot h_{t}))^{2}} \tag{6}

光が吸収されないと仮定すると, ρ\rho1F1-Fとなり, 透過の場合のBSDFは,

(7)ftm(i,o,m)=(1F(i,m))δωm(ht,m)ηo2(ηi(iht)+ηo(oht))2f_{t}^{m}(i,o,m)=(1-F(i,m))\frac{\delta_{\omega_{m}}(h_{t},m)\eta_{o}^{2}}{(\eta_{i}(i \cdot h_{t}) + \eta_{o}(o \cdot h_{t}))^{2}} \tag{7}

BTDFは相反性がなく, ftm(i,o,m)/ηo2=ftm(o,i,m)/ηi2f_{t}^{m}(i,o,m)/\eta_{o}^{2}=f_{t}^{m}(o,i,m)/\eta_{i}^{2}である. BTDFはグレイジングアングルに近づくほど増加し, そのためオフスペキュラーなピークが生じる1.

1. 正反射方向からずれた方向にスペキュラーのピークがあることを, オフスペキュラーと呼ぶ.

粗い面のBSDF

マイクロサーフェスのBSDFと式(1)(1)を使うと, BSDF fsf_{s}を導くことができる. BSDFはBRDFとBTDFの和であるから,

fs(i,o,m)=fr(i,o,m)+ft(i,o,m)f_{s}(i,o,m) = f_{r}(i,o,m) + f_{t}(i,o,m)

反射の項は,

(8)fr(i,o,n)=F(i,hr)G(i,o,hr)D(hr)4inonf_{r}(i,o,n)=\frac{F(i,h_{r})G(i,o,h_{r})D(h_{r})}{4|i \cdot n||o \cdot n|} \tag{8}

分母のπ\piが4になっていること以外, Cook-TorranceのBSDFと同じである.
透過の項は,

(9)ft(i,o,n)=ihtohtinonηo2(1F(i,ht))G(i,o,ht)D(ht)(ηi(iht)+ηo(oht))2f_{t}(i,o,n)=\frac{|i \cdot h_{t}||o \cdot h_{t}|}{|i \cdot n||o \cdot n|}\frac{\eta_{o}^{2}(1-F(i,h_{t}))G(i,o,h_{t})D(h_{t})}{(\eta_{i}(i \cdot h_{t}) + \eta_{o}(o \cdot h_{t}))^{2}} \tag{9}

F, D, Gの選択

フレネル項は次のようになる.

(10)F(i,m)=12(gc)2(g+c)2(1+(c(g+c)1)2(c(gc)+1)2)F(i,m)=\frac{1}{2}\frac{(g-c)^{2}}{(g+c)^{2}}(1+\frac{(c(g+c)-1)^{2}}{(c(g-c)+1)^{2}}) \tag{10}
where g=ηt2ηi21+c2 and c=imwhere \ g=\sqrt{\frac{\eta_{t}^{2}}{\eta_{i}^{2}}-1+c^{2}} \ and \ c=|i \cdot m|

フレネル項FFのより簡単な近似式も知られている [CT82, Sch94].

F(θ)=R0+(1R0)(1cosθ)5 where R0=(η1η2η1+η2)2F(\theta)=R_{0}+(1-R_{0})(1-cos\theta)^5 \ where \ R_{0}=(\frac{\eta_{1}-\eta_{2}}{\eta_{1}+\eta_{2}})^2

マイクロファセット法線分布関数DDについて, 本論文ではBeckmann, Phong, GGXについて論じる.
幾何減衰関数GGDDに依存する. ここでは, Smithの近似を用いる [Smi67]. SmithのGGは, 1方向の関数G1G_{1}の積で近似することができる.

G(i,o,m)G1(i,m)G1(o,m)G(i,o,m) \approx G_{1}(i,m)G_{1}(o,m)
G1G_{1}DDから導かれる ([Smi67, Bro80, BBS02], と付録A).

分布関数と関連する関数

法線分布関数Beckmann, GGXについて, Smithの幾何減衰関数G1G_{1}とサンプリング関数ともに述べる. サンプリング関数は, 2つの[0,1)[0,1)に一様分布する乱数ξ1\xi_{1}ξ2\xi_{2}からマイクロサーフェスの法線を生成する関数です. サンプリング関数がmmを生成する確率は次の式で与えられます.

pm(m)=D(m)mnp_{m}(m)=D(m)|m \cdot n|

以降, θm\theta_{m}mmnn間の角度, θv\theta_{v}vvnn間の角度, χ+(a)\chi^{+}(a)は正数を表す特性関数です (つまり, a>0なら1, a<=0なら0). また, 全てのDDmn0m \cdot n \leq 0ならD(m)=0D(m)=0で, 異方性のバリエーションは考えません.

Beckmann Distribution

Beckmann分布は幅のパラメータαb\alpha_{b}とすると,

(11)D(m)=χ+(mn)παb2cos4θmetan2θmαb2D(m)=\frac{\chi^{+}(m \cdot n)}{\pi\alpha_{b}^{2}cos^{4}\theta_{m}}e^{\frac{-tan^{2}\theta_{m}}{\alpha_{b}^{2}}} \tag{11}
(12)G1(v,m)=χ+(vmvn)21+erf(a)+1aπea2G_{1}(v,m)=\chi^{+}(\frac{v \cdot m}{v \cdot n})\frac{2}{1+erf(a)+\frac{1}{a\sqrt{\pi}}e^{-a^{2}}} \tag{12}
with a=(αbtanθv)1with \ a=(\alpha_{b}tan\theta_{v})^{-1}

誤差関数erf(x)=2π0xex2dxerf(x)=\frac{2}{\sqrt{\pi}}\int_{0}^{x}e^{-x^{2}}dxは高価だが, Schlick[Sch94]は上記Smithの幾何減衰関数の近似を示している.

(13)G1(v,m)χ+(vmvn)={3.535a+2.181a21+2.276a+2.577a2if a&lt;1.61otherwiseG_{1}(v,m) \approx \chi^{+}(\frac{v \cdot m}{v \cdot n})=\begin{cases}\frac{3.535a + 2.181a^{2}}{1+2.276a+2.577a^{2}} &amp; if \ a&lt;1.6\\1 &amp; otherwise\end{cases} \tag{13}

分布関数のサンプルD(m)mnD(m)|m \cdot n|は,
θm=arctanαb2log(1ξ1)(14)ϕm=2πξ2(15)\begin{array}{ll} \theta_{m}=arctan\sqrt{-\alpha_{b}^{2}log(1-\xi_{1})} &amp; (14)\\ \phi_{m}=2\pi\xi_{2} &amp; (15) \end{array}

GGX Distribution

GGX分布は幅のパラメータαg\alpha_{g}とすると,

(16)D(m)=αg2χ+(mn)πcos4θm(αg2+tan2θm)2D(m)=\frac{\alpha_{g}^{2}\chi^{+}(m \cdot n)}{\pi cos^{4}\theta_{m}(\alpha_{g}^{2} + tan^{2}\theta_{m})^{2}} \tag{16}

式変形すると,
(17)D(m)=αg2χ+(mn)π((αg21)cos2θ+1)2D(m)=\frac{\alpha_{g}^{2}\chi^{+}(m \cdot n)}{\pi ((\alpha_{g}^{2}-1)cos^{2}\theta + 1)^{2}} \tag{17}

(18)G1(v,m)=χ+(vmvn)21+1+αg2tan2θvG_{1}(v,m)=\chi^{+}(\frac{v \cdot m}{v \cdot n})\frac{2}{1+\sqrt{1+\alpha_{g}^{2}tan^{2}\theta_{v}}} \tag{18}

分布関数のサンプルD(m)mnD(m)|m \cdot n|は,
θm=arctan(αgξ11ξ1)(19)θm=arccos1ξ1ξ1(αg21)+1(20)ϕm=2πξ2(21)\begin{array}{ll} \theta_{m}=arctan(\frac{\alpha_{g}\sqrt{\xi_{1}}}{\sqrt{1-\xi_{1}}}) &amp; (19)\\ \theta_{m}= arccos\sqrt{\frac{1-\xi_{1}}{\xi_{1}(\alpha_{g}^{2}-1)+1}}&amp; (20)\\ \phi_{m}=2\pi\xi_{2} &amp; (21) \end{array}

重み

サンプリングの重み係数は,
(22)weight(o)=fs(i,o,n)onpo(o)weight(o) = \frac{f_{s}(i,o,n)|o \cdot n|}{p_{o}(o)} \tag{22}
(23)po(o)=pm(m)ωhωop_{o}(o)=p_{m}(m)||\frac{\partial\omega_{h}}{\partial\omega_{o}}|| \tag{23}

反射方向oro_{r}は,
or=2immio_{r}=2|i \cdot m|m-i
透過方向oto_{t}は,
ot=(ηcsign(in)1+η(c21)mηiwith c=(im) and η=ηi/ηt\begin{array}{l} o_{t}=(\eta c-sign(i \cdot n)\sqrt{1+\eta(c^{2}-1)}m-\eta i\\ with \ c=(i \cdot m) \ and \ \eta=\eta_{i}/\eta_{t} \end{array}

反射と透過どちらの場合も重み係数は次のようになる.

(24)weight(o)=fs(i,o,n)onpo(o)=imG(i,o,m)inmnweight(o) = \frac{f_{s}(i,o,n)|o \cdot n|}{p_{o}(o)} = \frac{|i \cdot m|G(i,o,m)}{|i \cdot n||m \cdot n|} \tag{24}

この重みは, パラメータによってはグレイジングアングル付近で, 過大な値になることがある.

参照

[CT82] COOK R. L., TORRANCE K. E.: A reflectance model for computer graphics. ACM Transactions on Graphics 1, 1 (Jan. 1982), 7–24.
[Sch94] SCHLICK C.: An inexpensive BRDF model for physically-based rendering. Computer Graphics Forum 13, 3 (1994), 233–246.
[Smi67] SMITH B. G.: Geometrical shadowing of a random rough surface. IEEE Trans. on Antennas and Propagation (1967), 668–671.
[Bro80] BROWN G. S.: Shadowing by non-Gaussian random surfaces. IEEE Trans. on Antennas and Propagation 28 (Nov. 1980), 788–790.
[BBS02] BOURLIER C., BERGINC G., SAILLARD J.: One- and two-dimensional shadowing functions for any height and slope stationary uncorrelated surface in the monostatic and bistatic configurations. IEEE Trans. on Antennas and Propagation 50 (Mar. 2002), 312–324.
[GRAPHICS]https://agraphicsguy.wordpress.com/2015/11/01/sampling-microfacet-brdf/
[FRANKE]https://www.tobias-franke.eu/log/2014/03/30/notes_on_importance_sampling.html

付録A: Smithの幾何学減衰関数G1G_{1}の導出

付録B: 法線分布関数DDのサンプル

逆関数法

ある確率分布P(x)P(x)に従う乱数を, 一様分布に従う乱数から生成する方法である.
UUが一様分布に従うとすると,
P(Uu)=u (0u1)P(U \le u) = u \ (0 \le u \le 1)
P(x)P(x)の累積分布関数をF(x)F(x)とすると,
UuF1(U)F1(u)U \le u \Leftrightarrow F^{-1}(U) \le F^{-1}(u)
が成り立つため, 次も成り立つ.
P(F1(U)F1(u))=uP(F^{-1}(U) \le F^{-1}(u)) = u
F1(u)=xF^{-1}(u)=xとおくと,
P(F1(U)x)=F(x)P(F^{-1}(U) \le x) = F(x)
F1(U)F^{-1}(U)は累積分布関数がF(x)F(x)となる確率分布P(x)P(x)に従う.

GGX

分布関数を半球面で積分したいので, 立体角方向にcosθcos \thetaで投影し, sinθsin \thetaをかけて緯度方向に積分する.
(25)D(m)=αg2χ+(mn)π((αg21)cos2θ+1)2D(m)=\frac{\alpha_{g}^{2}\chi^{+}(m \cdot n)}{\pi ((\alpha_{g}^{2}-1)cos^{2}\theta + 1)^{2}} \tag{25}
ph(θ,ϕ)=αg2cosθsinθπ((αg21)cos2θ+1)2p_{h}(\theta, \phi) =\frac{\alpha_{g}^{2}cos \theta sin \theta}{\pi ((\alpha_{g}^{2}-1)cos^{2}\theta + 1)^{2}}
02π02πph(θ,ϕ)dθdϕ=02π2πph(θ)dθ\int_{0}^{2 \pi} \int_{0}^{2 \pi}p_{h}(\theta, \phi)d\theta d\phi = \int_{0}^{2 \pi} 2 \pi p_{h}(\theta)d\theta

累積分布関数は次のようになる.
Ph(θ)=0θ2αg2sin(t)cos(t)((αg21)cos2(t)+1)2dt=θ0αg2((αg21)cos2(t)+1)2d(cos2t)=αg2αg210θd(1(αg21)cos2(t)+1)=αg2αg21(1(αg21)cos2θ+11αg2)=αg2(αg21)2cos2θ+(αg21)1αg21\begin{array}{lll} P_{h}(\theta)&amp;=&amp;\int_{0}^{\theta} \frac{2 \alpha_{g}^{2} sin(t) cos(t)}{((\alpha_{g}^{2}-1)cos^{2}(t) + 1)^{2}} dt \\ &amp;=&amp;\int_{\theta}^{0} \frac{\alpha_{g}^{2}}{((\alpha_{g}^{2}-1)cos^{2}(t) + 1)^{2}} d(cos^{2}t) \\ &amp;=&amp;\frac{\alpha_{g}^{2}}{\alpha_{g}^2-1}\int_{0}^{\theta} d(\frac{1}{(\alpha_{g}^{2}-1)cos^{2}(t) + 1}) \\ &amp;=&amp;\frac{\alpha_{g}^{2}}{\alpha_{g}^2-1}(\frac{1}{(\alpha_{g}^{2}-1)cos^{2}\theta + 1} - \frac{1}{\alpha_{g}^{2}}) \\ &amp;=&amp;\frac{\alpha_{g}^{2}}{(\alpha_{g}^{2}-1)^{2}cos^{2}\theta + (\alpha_{g}^{2}-1)} - \frac{1}{\alpha_{g}^{2}-1} \end{array}

逆関数Ph1P_{h}^{-1}は次のようになるため,
Ph1=αg2(αg21)2cos2θ+(αg21)1αg21\begin{array}{lll} P_{h}^{-1}&amp;=&amp;\frac{\alpha_{g}^{2}}{(\alpha_{g}^{2}-1)^{2}cos^{2}\theta + (\alpha_{g}^{2}-1)} - \frac{1}{\alpha_{g}^{2}-1} \end{array}

一様分布にしたがう乱数をξ\xiとすると,

ξ=αg2(αg21)2cos2θ+(αg21)1αg21\xi = \frac{\alpha_{g}^{2}}{(\alpha_{g}^{2}-1)^{2}cos^{2}\theta + (\alpha_{g}^{2}-1)} - \frac{1}{\alpha_{g}^{2}-1}
θ\thetaは次のように計算できる.
θ=arccos1ξξ(αg21)+1 or θ=arctan(αgξ1ξ)\theta = arccos\sqrt{\frac{1-\xi}{\xi(\alpha_{g}^{2}-1)+1}} \ or \ \theta = arctan(\alpha_{g}\sqrt{\frac{\xi}{1-\xi}})

Importance Sampling Microfacet-Based BSDFs using the Distribution of Visible Normals

GGX

GGX分布は幅のパラメータαx,αy\alpha_{x}, \alpha_{y}とすると,

(16)D(m)=χ+(mn)παxαycos4θm(1+tan2θm(cos2ϕmαx2+sin2ϕmαy2))2D(m)=\frac{\chi^{+}(m \cdot n)}{\pi \alpha_{x}\alpha_{y}cos^{4}\theta_{m}(1 + tan^{2}\theta_{m}(\frac{cos^{2} \phi_{m}}{\alpha_{x}^{2}} + \frac{sin^{2}\phi_{m}}{\alpha_{y}^{2}}))^{2}} \tag{16}

α=cos2ϕvαx2+sin2ϕvαy2\alpha = \sqrt{cos^{2} \phi_{v} \alpha_{x}^2 + sin^{2} \phi_{v} \alpha_{y}^{2}}とすると,
(18)G1(v,m)=χ+(vmvn)21+1+α2tan2θvG_{1}(v,m)=\chi^{+}(\frac{v \cdot m}{v \cdot n})\frac{2}{1+\sqrt{1+\alpha^{2}tan^{2}\theta_{v}}} \tag{18}

Sampling the GGX Distribution of Visible Normals

まとめ

説明はしませんがコードはあげています Github.
レンダリングやマイクロファセットの説明にうまく活用できないか考えています.

0 件のコメント:

コメントを投稿