はじめに
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} i からの放射照度と出射方向o \boldsymbol{o} o へ放射される放射輝度の比率である. f s ( i , o , n ) f_{s}(i, o, n) f s ( i , o , n ) と表し, n \boldsymbol{n} n はローカルサーフェスの法線である.
反射と透過に分割した場合, それぞれBRDR, BRTFと呼ばれる. すなわち, f s = f r + f t f_{s} = f_{r} + f_{t} f s = f r + f t である.
定義
放射束 (radiant flux) (W W W ): ある面を単位時間あたりに通過する放射エネルギー.
放射照度 (irradiance) (W / m 2 W/m^{2} W / m 2 ): 単位時間あたりに照射される, 面積あたりの放射エネルギー.
放射輝度 (radiance) (W / s r / m 2 W/sr/m^{2} W / s r / m 2 ): ある点からある方向へ放出される放射束.
Microfacet Models
マイクロサーフェスの細かな凹凸は, 完全な反射(透過)特性を持った微小平面の集合として表現する. マイクロサーフェスの特徴は2つの統計量を用いて, マクロサーフェスとして簡略化される. 2つの統計量は, マイクロファセット(の法線)の分布D D D と幾何減衰関数G G G である. 一般的には一度の反射(透過)だけ扱う. 次にD D D とG G G を定義する.
Microfacet Distribution Function D D D
マイクロファセットの法線分布D ( m ) D(m) D ( m ) を定義する.
方向m m m 上の微小立体角をd ω m d\omega_{m} d ω m , マクロサーフェス上の微小面をd A dA d A とすると, D ( m ) d ω m d A D(m)d\omega_{m}dA D ( m ) d ω m d A は, 法線が立体角方向と一致するマイクロファセットの合計の面積を表す. D D D は単位1/ステラジアンの密度関数である.
D D D は少なくとも以下を満たす.
0以上
0 ≤ D ( m ) ≤ ∞ 0 \leq D(m) \leq \infty 0 ≤ D ( m ) ≤ ∞
マイクロファセットの総面積は少なくとも, 対応するマクロファセットの面積に等しい
1 ≤ D ( c m ) d ω m 1 \leq D(cm)d\omega_{m} 1 ≤ D ( c m ) d ω m
マイクロファセットの符号付き投影面積は, 任意の方向v v v のマクロサーフェスの投影面積を等しい
( v ⋅ n ) = ∫ D ( m ) ( v ⋅ m ) d ω m (v \cdot n) = \int D(m)(v \cdot m)d\omega_{m} ( v ⋅ n ) = ∫ D ( m ) ( v ⋅ m ) d ω m
v = n v=n v = n の場合,
1 = ∫ D ( m ) 1 = \int D(m) 1 = ∫ D ( m )
Shadowing Masking Function G
幾何減衰関数G ( i , o , m ) G(i,o,m) G ( i , o , m ) は, マイクロファセット上の法線m m m の点が入出射両方向から可視である割合を表す.
遮蔽はgrazing angleや極度に荒いサーフェスでしか強く表れないが, エネルギー保存測を満たすために必要である
G G G は以下を満たす.
0以上1以下
0 ≤ G ( i , o , m ) ≤ 1 0 \leq G(i,o,m) \leq 1 0 ≤ G ( i , o , m ) ≤ 1
入出射方向に対して対象
G ( i , o , m ) = G ( o , i , m ) G(i,o,m)=G(o,i,m) G ( i , o , m ) = G ( o , i , m )
表面側から裏面は見えない(その逆も同様)
G ( i , o , m ) = 0 i n ( i ⋅ m ) ( i ⋅ n ) ≤ o r ( o ⋅ m ) ( o ⋅ n ) ≤ 0 G(i,o,m)=0 in (i \cdot m)(i \cdot n) \leq or (o \cdot m)(o \cdot n) \leq 0 G ( i , o , m ) = 0 i n ( i ⋅ m ) ( i ⋅ n ) ≤ o r ( o ⋅ m ) ( o ⋅ n ) ≤ 0
マイクロサーフェスBSDFの積分
BSDFの積分は, マイクロサーフェスの可視部分からの放射を積分する. 放射の割合はマイクロサーフェスのBSDFf s m f_{s}^{m} f s m によって決まり, 可視部分の割合はD D D とG G G の積で決まる.
放射照度と放射輝度は, それぞれ入射と出射方向への投影面積で計算される.
(1) f s ( i , o , n ) = ∫ ∣ i ⋅ m i ⋅ n ∣ f s m ( i , o , m ) ∣ o ⋅ m o ⋅ n ∣ G ( i , o , m ) D ( m ) d w m f_{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} f s ( i , o , n ) = ∫ ∣ i ⋅ n i ⋅ m ∣ f s m ( i , o , m ) ∣ o ⋅ n o ⋅ m ∣ G ( i , o , m ) D ( m ) d w m ( 1 )
マイクロサーフェスが局所的に滑らかと仮定すると, f s m f_{s}^{m} f s m は, 理想的な鏡面反射と理想的なSnellの法則に従う透過の, 総和とFresnel項F F F で決まる減衰の乗算になる.
マイクロサーフェススペキュラー BSDF
多くのマイクロファセットモデルが理想のスペキュラー反射を仮定する. このとき, マイクロサーフェスは極小の鏡の集まりのように振る舞い, この極小の鏡のことをマイクロファセットと呼ぶ.
一般化したスペキュラーBSDFは, 入射方向i i i からのエネルギーを, ひとつの方向s s s へ, ρ \rho ρ の割合いで放射する関数になる. ρ \rho ρ とs s s は, i i i とm m m の関数になる.
(2) f s m ( i , o , m ) = ρ δ ω o ( s , o ) ∣ o ⋅ m ∣ f_{s}^{m}(i,o,m) = \rho\frac{\delta_{\omega_{o}}(s,o)}{|o \cdot m|}\tag{2} f s m ( i , o , m ) = ρ ∣ o ⋅ m ∣ δ ω o ( s , o ) ( 2 )
δ ω o \delta_{\omega_{o}} δ ω o はディラックのデルタ関数で, s = 0 s=0 s = 0 で∞ \infin ∞ , それ以外はゼロである.
任意のi i i とo o o で, 高々ひとつのマイクロサーフェス法線で反射すると仮定すると, その法線はh ( i , o ) h(i,o) h ( i , o ) で計算できる. この法線をハーフディレクションと呼ぶ.
( 2 ) (2) ( 2 ) をハーフディレクションh h h で書き直すと,
(3) f s m ( i , o , m ) = ρ ( i , m ) δ ω m ( h ( i , o ) , m ) ∣ o ⋅ m ∣ ∣ ∣ ∂ ω h ∂ ω o ∣ ∣ f_{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} f s m ( i , o , m ) = ρ ( i , m ) ∣ o ⋅ m ∣ δ ω m ( h ( i , o ) , m ) ∣ ∣ ∂ ω o ∂ ω h ∣ ∣ ( 3 )
∣ ∣ ∂ ω h ∂ ω o ∣ ∣ ||\frac{\partial \omega_{h}}{\partial \omega_{o}}|| ∣ ∣ ∂ ω o ∂ ω h ∣ ∣ はヤコビ行列の行列式で, 省略してヤコビアンと呼ばれる. ヤコビアンは多変量の微分であり, ω h \omega_{h} ω h のω o \omega_{o} ω o に対する微分値である.
理想的な反射f r m f_{r}^{m} f r m
理想的な反射を考えたとき, ハーフベクトルh r h_{r} h r は,
h r = h r ( i , o ) = h r ⃗ ∣ ∣ h r ⃗ ∣ ∣ h_{r}=h_{r}(i,o)=\frac{\vec{h_{r}}}{||\vec{h_{r}}||} h r = h r ( i , o ) = ∣ ∣ h r ∣ ∣ h r
h r ⃗ = s i g n ( i ⋅ n ) ( i + o ) \vec{h_{r}}=sign(i \cdot n)(i+o) h r = s i g n ( i ⋅ n ) ( i + o )
∣ ∣ ∂ ω h r ∂ ω o ∣ ∣ = ∣ o ⋅ h r ∣ ∣ ∣ h r ⃗ ∣ ∣ 2 = 1 4 ∣ o ⋅ h r ∣ ||\frac{\partial \omega_{h_{r}}}{\partial \omega_{o}}|| = \frac{|o \cdot h_{r}|}{||\vec{h_{r}}||^{2}}=\frac{1}{4|o \cdot h_{r}|} ∣ ∣ ∂ ω o ∂ ω h r ∣ ∣ = ∣ ∣ h r ∣ ∣ 2 ∣ o ⋅ h r ∣ = 4 ∣ o ⋅ h r ∣ 1
ρ \rho ρ をフレネルF F F にすると, 式( 3 ) (3) ( 3 ) は,
(4) f r m ( i , o , m ) = F ( i , m ) δ ω m ( h r , m ) 4 ( i ⋅ h r ) 2 f_{r}^{m}(i,o,m)=F(i,m)\frac{\delta_{\omega_{m}}(h_{r},m)}{4(i \cdot h_{r})^{2}} \tag{4} f r m ( i , o , m ) = F ( i , m ) 4 ( i ⋅ h r ) 2 δ ω m ( h r , m ) ( 4 )
ヤコビアン項があるため, f r m f_{r}^{m} f r m は∣ i ⋅ h r ∣ |i \cdot h_{r}| ∣ i ⋅ h r ∣ に反比例に減少する. これは現実に即している.
理想的な透過f t m f_{t}^{m} f t m
スネルの法則の屈折率をη i \eta_{i} η i , η o \eta_{o} η o とすると,
(5) h t = h t ( i , o ) = h t ⃗ ∣ ∣ h t ⃗ ∣ ∣ w h e r e h t ⃗ = − ( η i i + η o o ) 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} h t = h t ( i , o ) = ∣ ∣ h t ∣ ∣ h t w h e r e h t = − ( η i i + η o o ) ( 5 )
η i ≠ η o \eta_{i} \neq \eta_{o} η i ̸ = η o と仮定する. 対応するヤコビアンは,
(6) ∣ ∣ ∂ ω h t ∂ ω o ∣ ∣ = η o 2 ∣ o ⋅ h t ∣ ∣ ∣ h t ⃗ ∣ ∣ 2 = η o 2 ∣ o ⋅ h t ∣ ( η i ( i ⋅ h t ) + η o ( o ⋅ h t ) ) 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} ∣ ∣ ∂ ω o ∂ ω h t ∣ ∣ = ∣ ∣ h t ∣ ∣ 2 η o 2 ∣ o ⋅ h t ∣ = ( η i ( i ⋅ h t ) + η o ( o ⋅ h t ) ) 2 η o 2 ∣ o ⋅ h t ∣ ( 6 )
光が吸収されないと仮定すると, ρ \rho ρ は1 − F 1-F 1 − F となり, 透過の場合のBSDFは,
(7) f t m ( i , o , m ) = ( 1 − F ( i , m ) ) δ ω m ( h t , m ) η o 2 ( η i ( i ⋅ h t ) + η o ( o ⋅ h t ) ) 2 f_{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} f t m ( i , o , m ) = ( 1 − F ( i , m ) ) ( η i ( i ⋅ h t ) + η o ( o ⋅ h t ) ) 2 δ ω m ( h t , m ) η o 2 ( 7 )
BTDFは相反性がなく, f t m ( i , o , m ) / η o 2 = f t m ( o , i , m ) / η i 2 f_{t}^{m}(i,o,m)/\eta_{o}^{2}=f_{t}^{m}(o,i,m)/\eta_{i}^{2} f t m ( i , o , m ) / η o 2 = f t m ( o , i , m ) / η i 2 である. BTDFはグレイジングアングルに近づくほど増加し, そのためオフスペキュラーなピークが生じる1 .
1. 正反射方向からずれた方向にスペキュラーのピークがあることを, オフスペキュラーと呼ぶ.
粗い面のBSDF
マイクロサーフェスのBSDFと式( 1 ) (1) ( 1 ) を使うと, BSDF f s f_{s} f s を導くことができる. BSDFはBRDFとBTDFの和であるから,
f s ( i , o , m ) = f r ( i , o , m ) + f t ( i , o , m ) f_{s}(i,o,m) = f_{r}(i,o,m) + f_{t}(i,o,m) f s ( i , o , m ) = f r ( i , o , m ) + f t ( i , o , m )
反射の項は,
(8) f r ( i , o , n ) = F ( i , h r ) G ( i , o , h r ) D ( h r ) 4 ∣ i ⋅ n ∣ ∣ o ⋅ n ∣ f_{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} f r ( i , o , n ) = 4 ∣ i ⋅ n ∣ ∣ o ⋅ n ∣ F ( i , h r ) G ( i , o , h r ) D ( h r ) ( 8 )
分母のπ \pi π が4になっていること以外, Cook-TorranceのBSDFと同じである.
透過の項は,
(9) f t ( i , o , n ) = ∣ i ⋅ h t ∣ ∣ o ⋅ h t ∣ ∣ i ⋅ n ∣ ∣ o ⋅ n ∣ η o 2 ( 1 − F ( i , h t ) ) G ( i , o , h t ) D ( h t ) ( η i ( i ⋅ h t ) + η o ( o ⋅ h t ) ) 2 f_{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 t ( i , o , n ) = ∣ i ⋅ n ∣ ∣ o ⋅ n ∣ ∣ i ⋅ h t ∣ ∣ o ⋅ h t ∣ ( η i ( i ⋅ h t ) + η o ( o ⋅ h t ) ) 2 η o 2 ( 1 − F ( i , h t ) ) G ( i , o , h t ) D ( h t ) ( 9 )
F, D, Gの選択
フレネル項は次のようになる.
(10) F ( i , m ) = 1 2 ( g − c ) 2 ( g + c ) 2 ( 1 + ( c ( g + c ) − 1 ) 2 ( c ( g − c ) + 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} F ( i , m ) = 2 1 ( g + c ) 2 ( g − c ) 2 ( 1 + ( c ( g − c ) + 1 ) 2 ( c ( g + c ) − 1 ) 2 ) ( 1 0 )
w h e r e g = η t 2 η i 2 − 1 + c 2 a n d c = ∣ i ⋅ m ∣ where \ g=\sqrt{\frac{\eta_{t}^{2}}{\eta_{i}^{2}}-1+c^{2}} \ and \ c=|i \cdot m| w h e r e g = η i 2 η t 2 − 1 + c 2 a n d c = ∣ i ⋅ m ∣
フレネル項F F F のより簡単な近似式も知られている [CT82 , Sch94 ].
F ( θ ) = R 0 + ( 1 − R 0 ) ( 1 − c o s θ ) 5 w h e r e R 0 = ( η 1 − η 2 η 1 + η 2 ) 2 F(\theta)=R_{0}+(1-R_{0})(1-cos\theta)^5 \ where \ R_{0}=(\frac{\eta_{1}-\eta_{2}}{\eta_{1}+\eta_{2}})^2 F ( θ ) = R 0 + ( 1 − R 0 ) ( 1 − c o s θ ) 5 w h e r e R 0 = ( η 1 + η 2 η 1 − η 2 ) 2
マイクロファセット法線分布関数D D D について, 本論文ではBeckmann, Phong, GGXについて論じる.
幾何減衰関数G G G はD D D に依存する. ここでは, Smithの近似を用いる [Smi67 ]. SmithのG G G は, 1方向の関数G 1 G_{1} G 1 の積で近似することができる.
G ( i , o , m ) ≈ G 1 ( i , m ) G 1 ( o , m ) G(i,o,m) \approx G_{1}(i,m)G_{1}(o,m) G ( i , o , m ) ≈ G 1 ( i , m ) G 1 ( o , m )
G 1 G_{1} G 1 はD D D から導かれる ([Smi67 , Bro80 , BBS02 ], と付録A).
分布関数と関連する関数
法線分布関数Beckmann, GGXについて, Smithの幾何減衰関数G 1 G_{1} G 1 とサンプリング関数ともに述べる. サンプリング関数は, 2つの[ 0 , 1 ) [0,1) [ 0 , 1 ) に一様分布する乱数ξ 1 \xi_{1} ξ 1 とξ 2 \xi_{2} ξ 2 からマイクロサーフェスの法線を生成する関数です. サンプリング関数がm m m を生成する確率は次の式で与えられます.
p m ( m ) = D ( m ) ∣ m ⋅ n ∣ p_{m}(m)=D(m)|m \cdot n| p m ( m ) = D ( m ) ∣ m ⋅ n ∣
以降, θ m \theta_{m} θ m はm m m とn n n 間の角度, θ v \theta_{v} θ v はv v v とn n n 間の角度, χ + ( a ) \chi^{+}(a) χ + ( a ) は正数を表す特性関数です (つまり, a>0なら1, a<=0なら0). また, 全てのD D D はm ⋅ n ≤ 0 m \cdot n \leq 0 m ⋅ n ≤ 0 ならD ( m ) = 0 D(m)=0 D ( m ) = 0 で, 異方性のバリエーションは考えません.
Beckmann Distribution
Beckmann分布は幅のパラメータα b \alpha_{b} α b とすると,
(11) D ( m ) = χ + ( m ⋅ n ) π α b 2 c o s 4 θ m e − t a n 2 θ m α b 2 D(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} D ( m ) = π α b 2 c o s 4 θ m χ + ( m ⋅ n ) e α b 2 − t a n 2 θ m ( 1 1 )
(12) G 1 ( v , m ) = χ + ( v ⋅ m v ⋅ n ) 2 1 + e r f ( a ) + 1 a π e − a 2 G_{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} G 1 ( v , m ) = χ + ( v ⋅ n v ⋅ m ) 1 + e r f ( a ) + a π 1 e − a 2 2 ( 1 2 )
w i t h a = ( α b t a n θ v ) − 1 with \ a=(\alpha_{b}tan\theta_{v})^{-1} w i t h a = ( α b t a n θ v ) − 1
誤差関数e r f ( x ) = 2 π ∫ 0 x e − x 2 d x erf(x)=\frac{2}{\sqrt{\pi}}\int_{0}^{x}e^{-x^{2}}dx e r f ( x ) = π 2 ∫ 0 x e − x 2 d x は高価だが, Schlick[Sch94 ]は上記Smithの幾何減衰関数の近似を示している.
(13) G 1 ( v , m ) ≈ χ + ( v ⋅ m v ⋅ n ) = { 3.535 a + 2.181 a 2 1 + 2.276 a + 2.577 a 2 i f a < 1.6 1 o t h e r w i s e G_{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}} & if \ a<1.6\\1 & otherwise\end{cases} \tag{13} G 1 ( v , m ) ≈ χ + ( v ⋅ n v ⋅ m ) = { 1 + 2 . 2 7 6 a + 2 . 5 7 7 a 2 3 . 5 3 5 a + 2 . 1 8 1 a 2 1 i f a < 1 . 6 o t h e r w i s e ( 1 3 )
分布関数のサンプルD ( m ) ∣ m ⋅ n ∣ D(m)|m \cdot n| D ( m ) ∣ m ⋅ n ∣ は,
θ m = a r c t a n − α b 2 l o g ( 1 − ξ 1 ) ( 14 ) ϕ m = 2 π ξ 2 ( 15 ) \begin{array}{ll}
\theta_{m}=arctan\sqrt{-\alpha_{b}^{2}log(1-\xi_{1})} & (14)\\
\phi_{m}=2\pi\xi_{2} & (15)
\end{array} θ m = a r c t a n − α b 2 l o g ( 1 − ξ 1 ) ϕ m = 2 π ξ 2 ( 1 4 ) ( 1 5 )
GGX Distribution
GGX分布は幅のパラメータα g \alpha_{g} α g とすると,
(16) D ( m ) = α g 2 χ + ( m ⋅ n ) π c o s 4 θ m ( α g 2 + t a n 2 θ m ) 2 D(m)=\frac{\alpha_{g}^{2}\chi^{+}(m \cdot n)}{\pi cos^{4}\theta_{m}(\alpha_{g}^{2} + tan^{2}\theta_{m})^{2}} \tag{16} D ( m ) = π c o s 4 θ m ( α g 2 + t a n 2 θ m ) 2 α g 2 χ + ( m ⋅ n ) ( 1 6 )
式変形すると,
(17) D ( m ) = α g 2 χ + ( m ⋅ n ) π ( ( α g 2 − 1 ) c o s 2 θ + 1 ) 2 D(m)=\frac{\alpha_{g}^{2}\chi^{+}(m \cdot n)}{\pi ((\alpha_{g}^{2}-1)cos^{2}\theta + 1)^{2}} \tag{17} D ( m ) = π ( ( α g 2 − 1 ) c o s 2 θ + 1 ) 2 α g 2 χ + ( m ⋅ n ) ( 1 7 )
(18) G 1 ( v , m ) = χ + ( v ⋅ m v ⋅ n ) 2 1 + 1 + α g 2 t a n 2 θ v G_{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} G 1 ( v , m ) = χ + ( v ⋅ n v ⋅ m ) 1 + 1 + α g 2 t a n 2 θ v 2 ( 1 8 )
分布関数のサンプルD ( m ) ∣ m ⋅ n ∣ D(m)|m \cdot n| D ( m ) ∣ m ⋅ n ∣ は,
θ m = a r c t a n ( α g ξ 1 1 − ξ 1 ) ( 19 ) θ m = a r c c o s 1 − ξ 1 ξ 1 ( α g 2 − 1 ) + 1 ( 20 ) ϕ m = 2 π ξ 2 ( 21 ) \begin{array}{ll}
\theta_{m}=arctan(\frac{\alpha_{g}\sqrt{\xi_{1}}}{\sqrt{1-\xi_{1}}}) & (19)\\
\theta_{m}= arccos\sqrt{\frac{1-\xi_{1}}{\xi_{1}(\alpha_{g}^{2}-1)+1}}& (20)\\
\phi_{m}=2\pi\xi_{2} & (21)
\end{array} θ m = a r c t a n ( 1 − ξ 1 α g ξ 1 ) θ m = a r c c o s ξ 1 ( α g 2 − 1 ) + 1 1 − ξ 1 ϕ m = 2 π ξ 2 ( 1 9 ) ( 2 0 ) ( 2 1 )
重み
サンプリングの重み係数は,
(22) w e i g h t ( o ) = f s ( i , o , n ) ∣ o ⋅ n ∣ p o ( o ) weight(o) = \frac{f_{s}(i,o,n)|o \cdot n|}{p_{o}(o)} \tag{22} w e i g h t ( o ) = p o ( o ) f s ( i , o , n ) ∣ o ⋅ n ∣ ( 2 2 )
(23) p o ( o ) = p m ( m ) ∣ ∣ ∂ ω h ∂ ω o ∣ ∣ p_{o}(o)=p_{m}(m)||\frac{\partial\omega_{h}}{\partial\omega_{o}}|| \tag{23} p o ( o ) = p m ( m ) ∣ ∣ ∂ ω o ∂ ω h ∣ ∣ ( 2 3 )
反射方向o r o_{r} o r は,
o r = 2 ∣ i ⋅ m ∣ m − i o_{r}=2|i \cdot m|m-i o r = 2 ∣ i ⋅ m ∣ m − i
透過方向o t o_{t} o t は,
o t = ( η c − s i g n ( i ⋅ n ) 1 + η ( c 2 − 1 ) m − η i w i t h c = ( i ⋅ m ) a n d η = η 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} o t = ( η c − s i g n ( i ⋅ n ) 1 + η ( c 2 − 1 ) m − η i w i t h c = ( i ⋅ m ) a n d η = η i / η t
反射と透過どちらの場合も重み係数は次のようになる.
(24) w e i g h t ( o ) = f s ( i , o , n ) ∣ o ⋅ n ∣ p o ( o ) = ∣ i ⋅ m ∣ G ( i , o , m ) ∣ i ⋅ n ∣ ∣ m ⋅ n ∣ weight(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} w e i g h t ( o ) = p o ( o ) f s ( i , o , n ) ∣ o ⋅ n ∣ = ∣ i ⋅ n ∣ ∣ m ⋅ n ∣ ∣ i ⋅ m ∣ G ( i , o , m ) ( 2 4 )
この重みは, パラメータによってはグレイジングアングル付近で, 過大な値になることがある.
参照
[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の幾何学減衰関数G 1 G_{1} G 1 の導出
付録B: 法線分布関数D D D のサンプル
逆関数法
ある確率分布P ( x ) P(x) P ( x ) に従う乱数を, 一様分布に従う乱数から生成する方法である.
U U U が一様分布に従うとすると,
P ( U ≤ u ) = u ( 0 ≤ u ≤ 1 ) P(U \le u) = u \ (0 \le u \le 1) P ( U ≤ u ) = u ( 0 ≤ u ≤ 1 )
P ( x ) P(x) P ( x ) の累積分布関数をF ( x ) F(x) F ( x ) とすると,
U ≤ u ⇔ F − 1 ( U ) ≤ F − 1 ( u ) U \le u \Leftrightarrow F^{-1}(U) \le F^{-1}(u) U ≤ u ⇔ F − 1 ( U ) ≤ F − 1 ( u )
が成り立つため, 次も成り立つ.
P ( F − 1 ( U ) ≤ F − 1 ( u ) ) = u P(F^{-1}(U) \le F^{-1}(u)) = u P ( F − 1 ( U ) ≤ F − 1 ( u ) ) = u
F − 1 ( u ) = x F^{-1}(u)=x F − 1 ( u ) = x とおくと,
P ( F − 1 ( U ) ≤ x ) = F ( x ) P(F^{-1}(U) \le x) = F(x) P ( F − 1 ( U ) ≤ x ) = F ( x )
F − 1 ( U ) F^{-1}(U) F − 1 ( U ) は累積分布関数がF ( x ) F(x) F ( x ) となる確率分布P ( x ) P(x) P ( x ) に従う.
GGX
分布関数を半球面で積分したいので, 立体角方向にc o s θ cos \theta c o s θ で投影し, s i n θ sin \theta s i n θ をかけて緯度方向に積分する.
(25) D ( m ) = α g 2 χ + ( m ⋅ n ) π ( ( α g 2 − 1 ) c o s 2 θ + 1 ) 2 D(m)=\frac{\alpha_{g}^{2}\chi^{+}(m \cdot n)}{\pi ((\alpha_{g}^{2}-1)cos^{2}\theta + 1)^{2}} \tag{25} D ( m ) = π ( ( α g 2 − 1 ) c o s 2 θ + 1 ) 2 α g 2 χ + ( m ⋅ n ) ( 2 5 )
p h ( θ , ϕ ) = α g 2 c o s θ s i n θ π ( ( α g 2 − 1 ) c o s 2 θ + 1 ) 2 p_{h}(\theta, \phi) =\frac{\alpha_{g}^{2}cos \theta sin \theta}{\pi ((\alpha_{g}^{2}-1)cos^{2}\theta + 1)^{2}} p h ( θ , ϕ ) = π ( ( α g 2 − 1 ) c o s 2 θ + 1 ) 2 α g 2 c o s θ s i n θ
∫ 0 2 π ∫ 0 2 π p h ( θ , ϕ ) d θ d ϕ = ∫ 0 2 π 2 π p h ( θ ) 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 ∫ 0 2 π ∫ 0 2 π p h ( θ , ϕ ) d θ d ϕ = ∫ 0 2 π 2 π p h ( θ ) d θ
累積分布関数は次のようになる.
P h ( θ ) = ∫ 0 θ 2 α g 2 s i n ( t ) c o s ( t ) ( ( α g 2 − 1 ) c o s 2 ( t ) + 1 ) 2 d t = ∫ θ 0 α g 2 ( ( α g 2 − 1 ) c o s 2 ( t ) + 1 ) 2 d ( c o s 2 t ) = α g 2 α g 2 − 1 ∫ 0 θ d ( 1 ( α g 2 − 1 ) c o s 2 ( t ) + 1 ) = α g 2 α g 2 − 1 ( 1 ( α g 2 − 1 ) c o s 2 θ + 1 − 1 α g 2 ) = α g 2 ( α g 2 − 1 ) 2 c o s 2 θ + ( α g 2 − 1 ) − 1 α g 2 − 1 \begin{array}{lll}
P_{h}(\theta)&=&\int_{0}^{\theta} \frac{2 \alpha_{g}^{2} sin(t) cos(t)}{((\alpha_{g}^{2}-1)cos^{2}(t) + 1)^{2}} dt \\
&=&\int_{\theta}^{0} \frac{\alpha_{g}^{2}}{((\alpha_{g}^{2}-1)cos^{2}(t) + 1)^{2}} d(cos^{2}t) \\
&=&\frac{\alpha_{g}^{2}}{\alpha_{g}^2-1}\int_{0}^{\theta} d(\frac{1}{(\alpha_{g}^{2}-1)cos^{2}(t) + 1}) \\
&=&\frac{\alpha_{g}^{2}}{\alpha_{g}^2-1}(\frac{1}{(\alpha_{g}^{2}-1)cos^{2}\theta + 1} - \frac{1}{\alpha_{g}^{2}}) \\
&=&\frac{\alpha_{g}^{2}}{(\alpha_{g}^{2}-1)^{2}cos^{2}\theta + (\alpha_{g}^{2}-1)} - \frac{1}{\alpha_{g}^{2}-1}
\end{array} P h ( θ ) = = = = = ∫ 0 θ ( ( α g 2 − 1 ) c o s 2 ( t ) + 1 ) 2 2 α g 2 s i n ( t ) c o s ( t ) d t ∫ θ 0 ( ( α g 2 − 1 ) c o s 2 ( t ) + 1 ) 2 α g 2 d ( c o s 2 t ) α g 2 − 1 α g 2 ∫ 0 θ d ( ( α g 2 − 1 ) c o s 2 ( t ) + 1 1 ) α g 2 − 1 α g 2 ( ( α g 2 − 1 ) c o s 2 θ + 1 1 − α g 2 1 ) ( α g 2 − 1 ) 2 c o s 2 θ + ( α g 2 − 1 ) α g 2 − α g 2 − 1 1
逆関数P h − 1 P_{h}^{-1} P h − 1 は次のようになるため,
P h − 1 = α g 2 ( α g 2 − 1 ) 2 c o s 2 θ + ( α g 2 − 1 ) − 1 α g 2 − 1 \begin{array}{lll}
P_{h}^{-1}&=&\frac{\alpha_{g}^{2}}{(\alpha_{g}^{2}-1)^{2}cos^{2}\theta + (\alpha_{g}^{2}-1)} - \frac{1}{\alpha_{g}^{2}-1}
\end{array} P h − 1 = ( α g 2 − 1 ) 2 c o s 2 θ + ( α g 2 − 1 ) α g 2 − α g 2 − 1 1
一様分布にしたがう乱数をξ \xi ξ とすると,
ξ = α g 2 ( α g 2 − 1 ) 2 c o s 2 θ + ( α g 2 − 1 ) − 1 α g 2 − 1 \xi = \frac{\alpha_{g}^{2}}{(\alpha_{g}^{2}-1)^{2}cos^{2}\theta + (\alpha_{g}^{2}-1)} - \frac{1}{\alpha_{g}^{2}-1} ξ = ( α g 2 − 1 ) 2 c o s 2 θ + ( α g 2 − 1 ) α g 2 − α g 2 − 1 1
θ \theta θ は次のように計算できる.
θ = a r c c o s 1 − ξ ξ ( α g 2 − 1 ) + 1 o r θ = a r c t a n ( α g ξ 1 − ξ ) \theta = arccos\sqrt{\frac{1-\xi}{\xi(\alpha_{g}^{2}-1)+1}} \ or \ \theta = arctan(\alpha_{g}\sqrt{\frac{\xi}{1-\xi}}) θ = a r c c o s ξ ( α g 2 − 1 ) + 1 1 − ξ o r θ = a r c t a n ( α g 1 − ξ ξ )
Importance Sampling Microfacet-Based BSDFs using the Distribution of Visible Normals
GGX
GGX分布は幅のパラメータα x , α y \alpha_{x}, \alpha_{y} α x , α y とすると,
(16) D ( m ) = χ + ( m ⋅ n ) π α x α y c o s 4 θ m ( 1 + t a n 2 θ m ( c o s 2 ϕ m α x 2 + s i n 2 ϕ m α y 2 ) ) 2 D(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} D ( m ) = π α x α y c o s 4 θ m ( 1 + t a n 2 θ m ( α x 2 c o s 2 ϕ m + α y 2 s i n 2 ϕ m ) ) 2 χ + ( m ⋅ n ) ( 1 6 )
α = c o s 2 ϕ v α x 2 + s i n 2 ϕ v α y 2 \alpha = \sqrt{cos^{2} \phi_{v} \alpha_{x}^2 + sin^{2} \phi_{v} \alpha_{y}^{2}} α = c o s 2 ϕ v α x 2 + s i n 2 ϕ v α y 2 とすると,
(18) G 1 ( v , m ) = χ + ( v ⋅ m v ⋅ n ) 2 1 + 1 + α 2 t a n 2 θ v G_{1}(v,m)=\chi^{+}(\frac{v \cdot m}{v \cdot n})\frac{2}{1+\sqrt{1+\alpha^{2}tan^{2}\theta_{v}}} \tag{18} G 1 ( v , m ) = χ + ( v ⋅ n v ⋅ m ) 1 + 1 + α 2 t a n 2 θ v 2 ( 1 8 )
Sampling the GGX Distribution of Visible Normals
まとめ
説明はしませんがコードはあげています Github .
レンダリングやマイクロファセットの説明にうまく活用できないか考えています.
0 件のコメント:
コメントを投稿