Skip to content
Go back

PBR Diffuse Lighting for GGX+Smith Microsurfaces

· Updated:

url

拙訳

GGX+SmithマイクロサーフェスのためのPBRディフューズライティング

私はEarlという者ですが…

Titanfall 2の開発中に行ったGGXディフューズの研究

主なおみやげ

  • GGX+Smithスペキュラと同じ仮定から導出される新しいディフューズ方程式
  • GGX+Smithスペキュラのための新しい安価で良好なシャドウイング/マスキング関数GG
  • シェーダ最適化のための新しい三角関数の公式

道すがらの面白い発見

  • PBRスペキュラにおける"44"の理由は?
  • Oren-Nayarディフューズにおける"ss"とは?
  • Smithのシャドウイング/マスキングの仮定
  • Lambertの物理的解釈
  • DisneyのBRDFの部分を解釈するのに役立つ

ちょっとした余談: 元々のモチベーション

  • Titanfall 2はOren-Nayarディフューズを用いた
  • 疑問: GGXのラフネスα\alphaからOren-Nayarのラフネスssを得るには?
  • 発見: Orn-Nayarはまったく異なる仮定に由来する

ちょっとした余談: 元々のモチベーション

Oren-NayarGGX+Smith
シャドウイング/マスキングV型空洞Smith
法線分布球面ガウシアンGGX
ラフネスパラメータs[0,]s \in [0, \infty]α[0,1]\alpha \in [0, 1]
完全に平坦s=0s = 0α=0\alpha = 0
法線の傾きslopesの標準偏差ssα=0\alpha = 0なら00α0\alpha \ne 0ならα2\alpha^2 \infty

ちょっとした余談: 元々のモチベーション

  • Oren-NayarとSmith+GGXはマッチしない!
    • 標準偏差ですらマッチできない
    • ふむ…GGXの標準偏差はα2\alpha^2\infty
      • α2\alpha^2でミップマップ/フィルタするのがたぶん”最適”?
      • 2つのGGX分布の合計はGGXではないので、“適切”にミップマップ/フィルタできない

本日のトークのロードマップ

  • 一般的なマイクロファセットベースBRDF
  • GGX+Smithマイクロファセットモデルによるディフューズのシミュレーション
  • 他のディフューズBRDFとの比較

本日のトークのロードマップ

  • 🟦一般的なマイクロファセットベースBRDF
  • GGX+Smithマイクロファセットモデルによるディフューズのシミュレーション
  • 他のディフューズBRDFとの比較

マイクロファセットBRDFのサブトピックマップ

  • 一般的な形式
  • そこからPBRスペキュラを得る方法
  • ディフューズBRDFへの拡張

マイクロファセットBRDFのサブトピックマップ

  • 🟦一般的な形式
  • そこからPBRスペキュラを得る方法
  • ディフューズBRDFへの拡張

マイクロファセットモデル

  • 複雑な🟦マクロサーフェスBRDFを大量の単純な🟥マイクロファセットBRDFで平均する
  • 基本的には単なるサブピクセルシェーダアンチエイジング

現実世界の例

”一般的”なマイクロファセットベースBRDF

  • 完全に一般的ではなく、ハイトフィールドを仮定する
    • 編まれたものweaves半円形のものarches空洞のあるものcavesはない

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) D(m)G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\textcolor{indianred}{\int_\Omega} \rho_m(L, V, m) D(m)G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} \textcolor{indianred}{dm}
    • すべてのマイクロファセット法線上の積分

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \textcolor{indianred}{\rho_m(L, V, m)} D(m)G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
    • 個々のファセットが光に反応する方法
      • すなわち、mmに集まるマイクロファセットBRDF
      • 通常は理想的な鏡か理想的なディフューズ

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) \textcolor{indianred}{D(m)} G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
    • 法線mmの確率密度
    • 配置(形状)ではなく、どんなファセット法線が存在するか

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) D(m) \textcolor{indianred}{G_2(L, V, m)} \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
    • マイクロファセットの実際の配置(形状)による遮蔽
      • シャドウイング/マスキング関数とも
    • マイクロファセットmmが光LLと視線VVの両方から見える確率

マイクロファセットBRDF: G2G_2G1G_1

  • 🟥G2(L,V,m)G_2(L, V, m)は2方向から見える割合
  • 🟦G1(V,m)G_1(V, m)は1方向から見える割合
    • 実際には、G2G_2G1G_1から導出される

マイクロファセットBRDF: D(m)D(m)の特性

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) \textcolor{indianred}{D(m)} G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
    • 法線mmの確率密度
      • 累積確率がmm近くでどれだけ素早く変化するか
        • より可能性の高い領域ではより素早く変化するだろう
      • 範囲[0,][0, \infty]であり、[0,1][0, 1]ではない!
        • その確率が0でないいずれかのmmに対してD(m)=D(m) = \infty

マイクロファセットBRDF: D(m)D(m)の特性

  • ΩD(m)dm=?\int_\Omega D(m) dm = ?
    • すべてのマイクロファセットの総表面積
    • 少しでもラフネスがあれば、常に1以上になる!
  • ΩD(m)cosθmdm=1\int_\Omega D(m) \cos \theta_m dm = 1
    • 総面積を正規化するため、cosθm=mN\cos \theta_m = m \cdot Nを用いてマイクロファセットをマクロサーフェスに射影する

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) \textcolor{indianred}{D(m) G_2(L, V, m)} \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
    • 光と視点の両方から見えるマイクロファセット法線mmがある確率密度
      • すなわち、BRDFρm(L,V,m)\rho_m(L, V, m)を用いる確率密度

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) D(m) G_2(L, V, m) \textcolor{indianred}{\frac{\langle m \cdot L \rangle}{|N \cdot L|}} \textcolor{skyblue}{\frac{\langle m \cdot V \rangle}{|N \cdot V|}} dm
    • mLNL\textcolor{indianred}{\frac{\langle m \cdot L \rangle}{|N \cdot L|}} --- ファセットmmが光からどれだけ大きく見えるか
    • mVNV\textcolor{skyblue}{\frac{\langle m \cdot V \rangle}{|N \cdot V|}} --- ファセットmmが視点からどれだけ大きく見えるか
      • すなわち、🟥光からと🟦視点への寄与を正規化する

一般的なマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \rho_m(L, V, m) \textcolor{indianred}{D(m) G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|}} dm
    • マイクロファセット法線mmを1回だけバウンスしてVVに到達するLLからの光の確率密度
    • 要件: ΩD(m)G2(L,V,m)mLNLmVNVdm1\int_\Omega \textcolor{indianred}{D(m) G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|}} dm \le 1
      • 平坦なD(m)D(m)でのみ1になる --- いずれのラフネスでも暗くなりすぎる!

一般的なマイクロファセットBRDF

  • 関連する要件:
    • ΩD(m)G1(V,m)mVdm=NV\int_\Omega D(m) G_1(V, m) \langle m \cdot V \rangle dm = |N \cdot V|
    • 任意の方向VVにおいて、見えているマイクロファセットの総面積はマクロサーフェスの面積に等しい

マイクロファセットBRDFのサブトピックマップ

  • 一般的な形式
  • 🟦そこからPBRスペキュラを得る方法
    • F(L,H)D(H)G2(L,V,H)4NLNV\textcolor{skyblue}{\frac{F(L, H) D(H) G_2(L, V, H)}{4|N \cdot L||N \cdot V|}}
    • 🟦それと: 44はどこから来たのか?π\piではいけない理由は?
  • ディフューズBRDFへの拡張

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

  • マイクロファセットBRDFは完璧な鏡である
    • すなわち、光はm=Hm = Hの場合にのみ反射する
      • 数学的には、BRDFはスケールされたDiracのデルタδm(H,m)\delta_m(H, m)である

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

  • 純粋な鏡のBRDF: kδm(H,m)k\delta_m(H, m)
    • δm(H,m)\delta_m(H, m)大きさmeasuremmを用いるDiracのデルタである
    • kkは我々が見つけなければならない正規化ファクターである
  • 正規化済みBRDF: Ωρ(L,V,N)cosθVdV=1\int_\Omega \rho(L, V, N)\cos\theta_V dV = 1
    • 任意の光と法線に対して、すべてのエネルギーは厳密に1つの視点に反射する

スペキュラBRDFの正規化

  • 一般的な場合: Ωρ(L,V,N)cosθVdV=1\int_\Omega \textcolor{skyblue}{\rho(L, V, N)}\cos\theta_V \textcolor{indianred}{dV} = 1
  • 我々の場合: Ωkδm(H,m)cosθVdVdmdm=1\int_\Omega \textcolor{skyblue}{k\delta_m(H, m)}\cos\theta_V \textcolor{indianred}{\frac{dV}{dm} dm} = 1
    • δm\delta_mを評価するためにdmdmで積分しなければならないので、積分領域を変更するためにdVdm\frac{dV}{dm}を見つける

スペキュラBRDFの正規化

  • dVdm\frac{dV}{dm}は、mmに対してVVがどれだけ早く変化するか、である
  • これはPBRスペキュラの4を導入するだろう!
    • 以降のスライドはその方法を示す

スペキュラBRDFの正規化

  • dVdm\frac{dV}{dm}を得るためにdVdVからdmdmを見つけたい
  • まず、δm\delta_mm=Hm = Hを選び取るので、dm=dHdm = dHである
    • すべてのベクトルは単位半球上に描かれる

スペキュラBRDFの正規化

  • 立体角dV\textcolor{lightgreen}{dV}を移動して…

スペキュラBRDFの正規化

  • 立体角dV\textcolor{lightgreen}{dV}L+VL+Vに移動して…

スペキュラBRDFの正規化

  • 立体角dV\textcolor{lightgreen}{dV}を移動して、スケールして…
    • L+VL+Vの球: HV\textcolor{indianred}{H \cdot V}

スペキュラBRDFの正規化

  • 立体角dV\textcolor{lightgreen}{dV}を移動して、スケールして…
    • L+VL+Vの球: HV\textcolor{indianred}{H \cdot V}
    • 単位球: 4π124πL+V2=1L+V2\frac{4\pi \textcolor{indianred}{1^2}}{4\pi \textcolor{skyblue}{|L+V|^2}} = \frac{\textcolor{indianred}{1}}{\textcolor{skyblue}{|L+V|^2}}

スペキュラBRDFの正規化

  • 立体角dV\textcolor{lightgreen}{dV}を移動して、スケールして…
    • L+VL+Vの球: HV\textcolor{indianred}{H \cdot V}
    • 単位球: 4π124πL+V2=1L+V2\frac{4\pi \textcolor{indianred}{1^2}}{4\pi \textcolor{skyblue}{|L+V|^2}} = \frac{\textcolor{indianred}{1}}{\textcolor{skyblue}{|L+V|^2}}
  • dm=HVL+V2dVdm = \frac{\textcolor{indianred}{H \cdot V}}{\textcolor{skyblue}{|L+V|^2}} \textcolor{lightgreen}{dV}

スペキュラBRDFの正規化

  • 立体角dV\textcolor{lightgreen}{dV}を移動して、スケールして…
    • L+VL+Vの球: HV\textcolor{indianred}{H \cdot V}
    • 単位球: 4π124πL+V2=1L+V2\frac{4\pi \textcolor{indianred}{1^2}}{4\pi \textcolor{skyblue}{|L+V|^2}} = \frac{\textcolor{indianred}{1}}{\textcolor{skyblue}{|L+V|^2}}
  • dm=HVL+V2dVdm = \frac{\textcolor{indianred}{H \cdot V}}{\textcolor{skyblue}{|L+V|^2}} \textcolor{lightgreen}{dV}

スペキュラBRDFの正規化

  • L+V=H(L+V)=HL+HV=2HV|L+V| = H \cdot (L+V) = H \cdot L + H \cdot V = 2 H \cdot V
    • この2の自乗がスペキュラBRDFの4である!
  • dm=HVL+V2dV=HV4(HV)2dVdm = \frac{H \cdot V}{|L+V|^2} dV = \frac{H \cdot V}{\textcolor{crimson}{4} (H \cdot V)^2} dV
  • dVdm=4HV\frac{dV}{dm} = \textcolor{crimson}{4} H \cdot V

スペキュラBRDFの正規化

  • Ωkδm(H,m)cosθVdVdmdm=1\int_\Omega k\delta_m(H, m) \textcolor{skyblue}{\cos\theta_V} \textcolor{indianred}{\frac{dV}{dm}} dm = 1
    • Ωkδm(H,m)(mV)(4HV)dm=1\int_\Omega k\delta_m(H, m) \textcolor{skyblue}{(m \cdot V)} \textcolor{indianred}{(4 H \cdot V)} dm = 1
    • m=H\textcolor{skyblue}{m = H}かつHV=HL\textcolor{skyblue}{H \cdot V = H \cdot L}なので、k=14(HL)(HV)k = \frac{1}{\textcolor{crimson}{4} \textcolor{skyblue}{(H \cdot L)} \textcolor{indianred}{(H \cdot V)}}
  • よって、完璧な鏡のBRDF: δm(H,m)4(HL)(HV)\frac{\delta_m(H, m)}{\textcolor{crimson}{4} \textcolor{skyblue}{(H \cdot L)} \textcolor{indianred}{(H \cdot V)}}

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

  • 入射光のFresnel反射F(L,m)F(L, m)のみがスペキュラ反射を行う
  • よって、最終的なスペキュラマイクロファセットBRDF:
ρm(L,V,m)=F(L,m)δH(m)4HLHV\rho_m(L, V, m) = F(L, m) \frac{\delta_H(m)}{\textcolor{crimson}{4} |H \cdot L| |H \cdot V|}

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

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \textcolor{skyblue}{\rho_m(L, V, m)} D(m) G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
  • ΩF(L,m)δm(H,m)4HLHVD(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \textcolor{skyblue}{\frac{F(L, m) \delta_m(H, m)}{\textcolor{crimson}{4} |H \cdot L| |H \cdot V|}} \textcolor{lightgreen}{D(m) G_2(L, V, m)} \frac{\langle m \cdot L \rangle}{\textcolor{lightgreen}{|N \cdot L|}} \frac{\langle m \cdot V \rangle}{\textcolor{lightgreen}{|N \cdot V|}} dm
    • δm(H,m)\delta_m(H, m)の積分は、その積分記号を取り除いてmmHHに置き換える、という操作を行う
  • スペキュラBRDF: F(L,H)D(H)G2(L,V,H)4NLNV\frac{\textcolor{skyblue}{F(L, H)} \textcolor{lightgreen}{D(H) G_2(L, V, H)}}{\textcolor{crimson}{4} \textcolor{lightgreen}{|N \cdot L| |N \cdot V}}

マイクロファセットBRDFのサブトピックマップ

  • 一般的な形式
  • そこからPBRスペキュラを得る方法
  • 🟦ディフューズBRDFへの拡張

ディフューズマイクロファセットBRDF

  • Ωρm(L,V,m)D(m)G2(L,V,m)mLNLmVNVdm\int_\Omega \textcolor{skyblue}{\rho_m(L, V, m)} D(m) G_2(L, V, m) \frac{\langle m \cdot L \rangle}{|N \cdot L|} \frac{\langle m \cdot V \rangle}{|N \cdot V|} dm
    • Lambertianディフューズ: ρm(L,V,m)=1π\textcolor{skyblue}{\rho_m(L, V, m) = \frac{1}{\pi}}
    • 積分を取り除くためのDiracのデルタがない ☹️
    • GGX+Smithの閉形式の解がない ☹️☹️

ディフューズマイクロファセットBRDF

  • 数値的に積分を解くので、良い近似を見つけたい
    • Oren-Nayarの論文と同じアプローチ
  • 最大半分の光が失われる!
    • 複数バウンスを無視できない…
      • (完全なOren-Nayarは二次バウンスも含む)

直接のみ

アルベド:

{0.75, 0.5, 0.25}

直接と間接

アルベド:

{0.75, 0.5, 0.25}

間接のみ

アルベド:

{0.75, 0.5, 0.25}

並べて表示

アルベド:

{0.75, 0.5, 0.25}

適切なアルベドの重要性

上:

正しい

下:

アルベド x 0.5、

光 x 2

適切なアルベドの重要性

上:

正しい

下:

アルベド x 2、

光 x 0.5

本日のトークのロードマップ

  • 🟥一般的なマイクロファセットベースBRDF
  • GGX+Smithマイクロファセットモデルによるディフューズのシミュレーション
  • 他のディフューズBRDFとの比較

本日のトークのロードマップ

  • 一般的なマイクロファセットベースBRDF
  • 🟦GGX+Smithマイクロファセットモデルによるディフューズのシミュレーション
    • シャドウイング/マスキング関数
    • パストレーシング
  • 他のディフューズBRDFとの比較

ディフューズシミュレーションのサブトピックマップ

  • シャドウイング/マスキング関数 (G1G_1, G2G_2)
    • 相関のない vs 高さ相関のあるGG
    • Smithのシャドウイング/マスキング
    • 新しいSmith+GGXのG2G_2近似
    • Smithの偉大さと奇妙さ
  • パストレーシング

ディフューズシミュレーションのサブトピックマップ

  • シャドウイング/マスキング関数 (G1G_1, G2G_2)
    • 🟦相関のない vs 高さ相関のあるGG
    • Smithのシャドウイング/マスキング
    • 新しいSmith+GGXのG2G_2近似
    • Smithの偉大さと奇妙さ
  • パストレーシング

高さ相関のあるGG

  • GnG_nnn個の方向からの幾何的な可視性である
  • 相関がない場合:
    • G2(L,V,m)=G1(L,m)G1(V,m)G_2(L, V, m) = G_1(L, m) G_1(V, m)
    • 現実的じゃない!点が高い位置にあるほど、LLVVの両方から見える可能性が大きくなる(低ければ、可能性は小さくなる)
    • 依然として、実践では、驚くほど優秀である

高さ相関のあるGG

  • 相関のないGGはハイトフィールドで法線に当たる光を取り…

高さ相関のあるGG

  • …そして、その法線を持つ各マイクロファセットのいたるところに均等にばらまく

高さ相関のあるGG

  • これは光を小さくする傾向にあるので、その可視性を減少したり、スペキュラを暗くしたりする

高さ相関のあるGG

  • 相関のないGGの誤差は遮蔽に関係している
  • サーフェスが粗くなるほど、誤差が大きくなる
  • LLVVがよりglancingであるほど、誤差が大きくなる
    • L=NL = Nおよび/またはV=NV = Nならば誤差なし

相関のない vs 相関のあるGG

高さ相関あり(下)は粗いサーフェスでのglancing反射を増幅する

黒のアルベド

光の強度 = π\pi

相関のない vs 相関のあるGG

厳密 vs 近似の相関のあるGG

近似(下)はかなり優秀だが、依然として中くらいの角度とラフネスでほんの少し暗くなりすぎている

厳密 vs 近似の相関のあるGG

高さ相関のあるGG 相関のないGG 差異

相関のあるGG

  • 角度相関も存在する
  • L=VL = Vのときに必要: G2(V,V,m)=G1(V,m)G_2(V, V, m) = G_1(V, m)
  • 相関のない形式: G2(V,V,m)=G1(V,m)2G_2(V, V, m) = G_1(V, m)^2
  • Height correlated G2G_2 somewhere in between when L=VL = V

ディフューズシミュレーションのサブトピックマップ

  • シャドウイング/マスキング関数 (G1G_1, G2G_2)
    • 相関のない vs 高さ相関GG
    • 🟦Smithのシャドウイング/マスキング
    • 新しいSmith+GGXのG2G_2近似
    • Smithの偉大さと奇妙さ
  • パストレーシング

Smithのシャドウイング/マスキング

  • すべての法線が平等に遮蔽されると仮定する
    • すなわち、G1G_1G2G_2mmに依存しない
    • 可能な限り最もバランスの取れた仮定

Smithのシャドウイング/マスキング

  • 正規化制約から導出できる:
    • G1(V)ΩD(m)mVdm=NVG_1(V) \int_\Omega D(m) \langle m \cdot V \rangle dm = |N \cdot V|
  • 確率的ハイトフィールドのレイトレーシングからも導出できる

Smithのシャドウイング/マスキング

  • 超基本的なレイトレース導出:
    • PDFP22(p,q)P_{22}(p, q)によって2D平面にmmを射影する
    • D(m)D(m)は等方的なので、PDFP2(q)P_2(q)による1Dスライスを用いる
    • 傾きμ\muを持つレイがハイトフィールドをウォークしつつ、レイ-サーフェスのコリジョンのPDFを得るためにP2(q)P_2(q)を用いる
    • G1G_1を得るためにコリジョンのPDFを用いる

Smithのシャドウイング/マスキング

polarの法線mm、PDFD(m)D(m)

Smithのシャドウイング/マスキング

🟦2Dの傾きp,qp, q、PDFP22(p,q)P_{22}(p, q)

🟦(p,q,1)(p, q, 1)

polarの法線mm、PDFD(m)D(m)

Smithのシャドウイング/マスキング

🟦2Dの傾きp,qp, q、PDFP22(p,q)P_{22}(p, q)

🟥qq

🟩qqに対するすべてのpp

🟦(p,q,1)(p, q, 1)

polarの法線mm、PDFD(m)D(m)

Smithのシャドウイング/マスキング

🟦2Dの傾きp,qp, q、PDFP22(p,q)P_{22}(p, q)

🟥qq   1Dの傾きqq、PDFP2(q)P_2(q)

🟩qqに対するすべてのpp

🟦(p,q,1)(p, q, 1)

polarの法線mm、PDFD(m)D(m)

Smith: 任意のD(m)D(m)

  • P22(p,q)=cos4θmD(m)P_{22}(p, q) = \cos^4 \theta_m D(m)
  • P2(q)=P22(p,q)dpP_2(q) = \int_{-\infty}^{\infty} P_{22}(p, q) dp
  • Λ(μ)=1μμ(qμ)P2(q)dq\Lambda(\mu) = \frac{1}{\mu} \int_{\mu}^{\infty} (q - \mu) P_2(q) dq
  • G1(V)=11+Λ(V),G2(L,V)=11+Λ(L)+Λ(V)G_1(V) = \frac{1}{1 + \Lambda(V)}, G_2(L, V) = \frac{1}{1 + \Lambda(L) + \Lambda(V)}

Smith: 相関あり vs 相関なし

  • G1(V)=11+Λ(V)G_1(V) = \frac{1}{1+\Lambda(V)}
  • 相関あり: G2(L,V)=11+Λ(L)+Λ(V)G_2(L, V) = \frac{1}{1+\Lambda(L)+\Lambda(V)}
  • 相関なし: G2(L,V)=11+Λ(L)+Λ(V)+Λ(L)Λ(V)G_2(L, V) = \frac{1}{1+\Lambda(L)+\Lambda(V)+\textcolor{indianred}{\Lambda(L)\Lambda(V)}}
    • LLまたはVVに対してΛ=0\Lambda = 0(すなわち、G1=1G_1 = 1)でない限り、小さくなりすぎる

GGXのSmith: Λ(V)\Lambda(V)

  • GGXでは: D(m)=α2π(cos4θm(α2+tan2θm)2)D(m) = \frac{\alpha^2}{\pi (\cos^4 \theta_m (\alpha^2 + \tan^2 \theta_m)^2)}
  • P22(p,q)=α2π(α2+tan2θm)2=α2π(α2+p2+q2)2P_{22}(p, q) = \frac{\alpha^2}{\pi (\alpha^2 + \tan^2 \theta_m)^2} = \frac{\alpha^2}{\pi (\alpha^2 + p^2 + q^2)^2}
  • P2(q)=α2π(α2+p2+q2)2dp=α22(α2+q2)3/2P_2(q) = \int_{-\infty}^{\infty} \frac{\alpha^2}{\pi (\alpha^2 + p^2 + q^2)^2} dp = \frac{\alpha^2}{2 (\alpha^2 + q^2)^{3/2}}

GGXのSmith: Λ(V)\Lambda(V)

  • Λ(μ)=1μμ(qμ)P2(q)dq=12(α2+μ2μ1)\Lambda(\mu) = \frac{1}{\mu} \int_{\mu}^{\infty} (q - \mu) P_2(q) dq = \frac{1}{2} \left( \frac{\sqrt{\alpha^2 + \mu^2}}{\mu} - 1 \right)
  • μ=cotθV\mu = \cot \theta_V
  • cosθV=NV\cos \theta_V = N \cdot V
  • Λ(V)=12(α2+(1α2)(NV)2NV1)\Lambda(V) = \frac{1}{2} \left( \frac{\sqrt{\alpha^2 + (1 - \alpha^2) (N \cdot V)^2}}{N \cdot V} - 1 \right)

GGXのSmith: G1(V),G2(L,V)G_1(V), G_2(L, V)

  • G1(V)=2NVα2+(1α2)(NV)2+NVG_1(V) = \frac{2 N \cdot V}{\sqrt{\alpha^2 + (1 - \alpha^2) (N \cdot V)^2} + N \cdot V}
  • G2(L,V)=2(NL)(NV)NVα2+(1α2)(NL)2+NLα2+(1α2)(NV)2G_2(L, V) = \frac{2(N \cdot L)(N \cdot V)}{N \cdot V \sqrt{\alpha^2 + (1 - \alpha^2) (N \cdot L)^2} + N \cdot L \sqrt{\alpha^2 + (1 - \alpha^2) (N \cdot V)^2}}
    • もっと安価な近似にしたい!

ディフューズシミュレーションのサブトピックマップ

  • シャドウイング/マスキング関数 (G1G_1, G2G_2)
    • 相関のない vs 高さ相関のあるGG
    • Smithのシャドウイング/マスキング
    • 🟦新しいSmith+GGXのG2G_2近似
    • Smithの偉大さと奇妙さ
  • パストレーシング

Smith: 近似GGX G1(V)G_1(V)

  • G1G_1の分母:
    • α2+(1α2)(NV)2+NV\sqrt{\alpha^2 + (1 - \alpha^2) (N \cdot V)^2} + N \cdot V
    • lerp((NV)2,1,α2)+NV\sqrt{\text{lerp}((N \cdot V)^2, 1, \alpha^2)} + N \cdot V
    • 近似: lerp(NV,1,α)+NV\text{lerp}(N \cdot V, 1, \alpha) + N \cdot V

Smith: 近似GGX G1(V)G_1(V)

  • G1(V)2NVlerp(NV,1,α)+NV=2NVNV(2α)+αG_1(V) \approx \frac{2 N \cdot V}{\text{lerp}(N \cdot V, 1, \alpha) + N \cdot V} = \frac{2 N \cdot V}{N \cdot V (2 - \alpha) + \alpha}
  • UnrealのSmithと同一と判明:
    • G1(V)NVNV(1k)+k,k=α2G_1(V) \approx \frac{N \cdot V}{N \cdot V (1 - k) + k}, k = \frac{\alpha}{2}

Smith: 近似GGX G2(L,V)G_2(L, V)

  • Λ(V)\Lambda(V)に対するこのG1G_1を解いて、G2(L,V)G_2(L, V)に接続する:
    • G2(L,V)=2NVNVlerp(2NLNV,NL+NV,α)G_2(L, V) = \frac{2|N \cdot V| |N \cdot V|}{\text{lerp}(2|N \cdot L| |N \cdot V|, |N \cdot L| + |N \cdot V|, \alpha)}
    • G2G_2の分子は完全なスペキュラBRDFでは打ち消される:
      • F(L,H)D(H)G2(L,V)4NLNV=F(L,H)D(H)2lerp(2NLNV,NL+NV,α)\frac{F(L, H) D(H) G_2(L, V)}{4|N \cdot L| |N \cdot V|} = \frac{F(L, H) D(H)}{2 \text{lerp}(2|N \cdot L| |N \cdot V|, |N \cdot L| + |N \cdot V|, \alpha)}

Smithの近似のコスト

  • 分母のコストを比較する:
    • G1(L)G1(V)G_1(L)G_1(V): F(L,H)D(H)(NL(2α)+α)(NV(2α)+α)\frac{F(L, H) D(H)}{(|N \cdot L| (2 - \alpha) + \alpha)(|N \cdot V| (2 - \alpha) + \alpha)} 約4サイクル
    • G2(L,V)G_2(L, V): F(L,H)D(H)2lerp(2NLNV,NL+NV,α)\frac{F(L, H) D(H)}{2 \text{lerp}(2|N \cdot L| |N \cdot V|, |N \cdot L| + |N \cdot V|, \alpha)} 約6サイクル
      • コストはNLN \cdot LNVN \cdot Vの計算を除く
      • 高さ相関のある形式は無視できる追加コストを持つ

Smithの近似のクオリティ

  • glancing角での粗い誘電体に役立つ

Smithの近似のクオリティ

  • glancing角での粗い誘電体に役立つ

相関のないGG

近似

差の画像:

赤 = 相関

緑 = 近似

相関のあるGG

近似

差の画像:

相関のない近似との比較

相関のあるGG

厳密

差の画像:

相関のある近似との比較

ディフューズシミュレーションのサブトピックマップ

  • シャドウイング/マスキング関数 (G1G_1, G2G_2)
    • 相関のない vs 高さ相関のあるGG
    • Smithのシャドウイング/マスキング
    • 新しいSmith+GGXのG2G_2近似
    • 🟦Smithの偉大さと奇妙さ
  • パストレーシング

Smithのマイクロサーフェスのハイトフィールド

[Walter et al. 2007Walter, B., Marschner, S. R., Li, H. and Torrance, K. E. 2007. Microfacet models for refraction through rough surfaces. Proceedings of the 18th eurographics conference on rendering techniques 195–206. 10.2312/EGWR/EGSR07/195-206. https://www.graphics.cornell.edu/~bjw/microfacetbsdf.pdf.]におけるSmithのレイトレーシング導出の図から1Dハイトフィールドを例示する

Smithのマイクロサーフェスのハイトフィールド

  • 導出は幅が0に近いほとんど独立したスラブの1Dハイトフィールド使う
    • 突如としてハイトフィールドの下にあることのみを禁止する

Smithのマスキングが奇妙な理由

  • レイトレーシング導出は異なる段階で矛盾する仮定を持つ:
    • 次のdτd\tauにおける高さはこの高さから独立している
      • 連続でないと仮定している
    • ハイトフィールドは任意の微分可能な関数である
      • 連続であると仮定している

Smithのマスキングが奇妙な理由

  • 計算曰く、可視性は非対称である: 下向きのレイは上向きのレイより同じハイトフィールド経路を生き延びる可能性が低い!
    • Λ(μ)=1μμ(qμ)P2(q)dq\Lambda(\mu) = \frac{1}{\mu} \int_{\mu}^{\infty} (q - \mu) P_2(q) dq
    • Λ(μ)\Lambda(\mu)はすべてのq>μq > \muを積分するので、μ<0\mu < 0μ>0\mu > 0のときより多くのqqの値にヒットする可能性がある

Smithのマスキングが素晴らしい理由

  • すべてのファセットの法線が同じ可視割合を持つ所ではGGはエネルギー保存則を満たす
  • その他のmmを使わないGGではいくつかの方向で間違った可視面積を得る
    • 可視面積が大きければ、反射が強くなるので、エネルギーを作る
    • 可視面積が小さければ、反射が弱くなるので、エネルギーを吸収する

ディフューズシミュレーションのサブトピックマップ

  • シャドウイング/マスキング関数 (G1G_1, G2G_2)
    • 相関のない vs 高さ相関のあるGG
    • Smithのシャドウイング/マスキング
    • 新しいSmith+GGXのG2G_2近似
    • Smithの偉大さと奇妙さ
  • 🟦パストレーシング

パストレースによるディフューズの解法

  • Smithの奇妙な点は現実のハイトフィールドがその仮定と一致するのを妨げる
    • 連続的であり、かつ、非連続的であることは不可能である
  • 数学モデルをレイトレースしなければならない
    • 数多の詳細はボーナススライドを参照

最初のレイトレース結果

  • GGXスペキュラかLambertianディフューズを選ぶためのFresnel付きの単純なレイトレーサー
  • 結果のBRDFは対称ではなかった!
    • ρ(L,V,N)=ρ(V,L,N)\rho(L, V, N) = \rho(V, L, N)
  • 何か間違ったかな?両部分は対称なBRDFなのに!

非対称なBRDFの原因

  • 本質的には、マージされたBRDFを持っていた:
    • ρ=F(L,N)ρspec+(1F(L,N))ρdiff\rho = F(L, N) \rho_{spec} + (1 - F(L, N)) \rho_{diff}
    • Fresnel補間が非対称!
  • 物理的にもっともらしい方法で直すには?

なぜLambertianディフューズなのか?

  • Lambertianディフューズは何をシミュレートする?
    • BRDFρ=1π\rho = \frac{1}{\pi}: すべての視点で同じ
    • 放射輝度=ρcosθV= \rho \cos\theta_V: 法線でより多くのフォトン
      • VVから見える総表面積に対して1cosθV\frac{1}{\cos\theta_V}でバランスを取る
      • なぜコサインでエネルギーが減少するのか?答えは驚くほどわかりにくいけど、かなり単純!

Lambertianディフューズの説明

  • BRDFはサーフェスに与えられるが、ディフューズ光は単に表面を通り過ぎる
    • Lambertは内部の光がすべての方向に同じ密度を持つことを仮定する
    • コサインでの減少は光方向に相対的なサーフェス角度に起因する

Lambertianディフューズの説明

  • 方向ごとに🟥面積あたりの同じエネルギー
  • 表面の方を向いた方向がより大きな🟦面積に投影される
    • 1/cosθ1 / \cos\thetaでスケールされる単位光あたりの面積
    • cosθ\cos\thetaでスケールされる面積あたりの光

Lambertianディフューズの説明

  • 光は侵入enterし、周囲でバウンスし、脱出exitする
  • 脱出方向は多数のバウンス事象の後に無作為である
  • アルベドは周波数依存の吸収事象に起因する

対称なBRDFのためのディフューズ修正

  • 侵入には反射/透過のためにFresnelを使う
  • 脱出は常に透過すると仮定する
  • 脱出にもFresnelが必要!

対称なBRDFのためのディフューズ修正

  • 反射: F=F0+(1F0)(1NV)5F = F_0 + (1 - F_0)(1 - N \cdot V)^5
  • 透過: 1F=(1F0)(1(1NV)5)1 - F = (1 - F_0)(1 - (1 - N \cdot V)^5)
  • Fresnelの法則は対称なので、視点からサーフェスに侵入する割合は視点に向かってサーフェスを脱出する割合に等しい

対称なBRDFのためのディフューズ修正

  • 内部的に反射する光はずっと透過する機会を得続けるので、正規化する必要がある!
    • 2π0π/2k(1(1cosθ)5)cosθsinθdθ=1\textcolor{skyblue}{2\pi} \int_0^{\pi/2} k(1-(1-\cos\theta)^5) \textcolor{indianred}{\cos\theta} \textcolor{skyblue}{\sin\theta d\theta} = 1
      • 因子(1F0)(1 - F_0)は正規化因子kkに吸収される
      • cosθ\textcolor{indianred}{\cos\theta}はBRDFを正規化するのに必要になる
      • 2π\textcolor{skyblue}{2\pi}sinθdθ\textcolor{skyblue}{\sin\theta d\theta}は半球上の積分に由来する

対称なBRDFのためのディフューズ修正

  • 厳密に簡単に解ける: k=2120π=1.05πk = \frac{21}{20\pi} = \frac{1.05}{\pi}
  • マージされたディフューズ+スペキュラマイクロファセットBRDF:
    • F=F0+(1F0)(1NV)5F = F_0 + (1-F_0)(1-N \cdot V)^5
    • ρ=Fρspec+(1F)1.05π(1(1NV)5)\rho = F \rho_{spec}+(1-F)\frac{1.05}{\pi}(1-(1-N \cdot V)^5)

最後!

  • パストレーシングシミュレーションに必要なすべてが揃ったので、最終的にどうなったかというと…

シミュレーション

スペキュラ付き

アルベド:

{0.75, 0.5, 0.25}

シミュレーション

ディフューズのみ

アルベド:

{0.75, 0.5, 0.25}

近似

ディフューズのみ

アルベド:

{0.75, 0.5, 0.25}

GGXディフューズ近似

  • facing=0.5+0.5LVfacing = 0.5 + 0.5 L \cdot V
  • rough=facing(0.90.4facing)(0.5+NHNH)rough = facing (0.9 - 0.4 facing) (\frac{0.5+N \cdot H}{N \cdot H})
  • smooth=1.05(1(1NL)5)(1(1NV)5)smooth = 1.05 (1-(1-N \cdot L)^5)(1-(1-N \cdot V)^5)
  • single=1πlerp(smooth,rough,α)single = \frac{1}{\pi} \text{lerp}(smooth, rough, \alpha)
  • multi=0.1159αmulti = 0.1159 \alpha
  • diffuse=albedo(single+albedomulti)diffuse = albedo * (single + albedo * multi)

余談: 有用なシェーダ恒等式

  • L+V2=2+2LV|L + V|^2 = 2 + 2L \cdot V
    • 0.5+0.5LV=14L+V20.5 + 0.5 L \cdot V = \frac{1}{4}|L+V|^2
  • NH=NL+LVL+VN \cdot H = \frac{N\cdot L+L\cdot V}{|L+V|}
  • LH=VH=12L+VL \cdot H = V \cdot H = \frac{1}{2}|L+V|

余談: 有用なシェーダ恒等式

  • HHを求めなくてもNHN \cdot HLHL \cdot Hは求められる!
計算サイクルレジスタ
H=normalize(L+V)H = \text{normalize}(L+V)を得る134
HHからNHN \cdot Hを得る164
HHからNHN \cdot HLHL \cdot Hを得る194
恒等式からNHN \cdot Hを得る7*2
恒等式からLHL \cdot HVHV \cdot Hを得る8*2

* LVL \cdot Vが計算済みでない場合、その分の+3サイクルが加わる

余談: 有用なシェーダ恒等式

  • lenSqLV=2+2LVlenSq_{LV} = 2+2 L \cdot V
  • rcpLenLV=rsqrt(lenSqLV)rcpLen_{LV} = rsqrt(lenSq_{LV})
  • NH=(HL+NV)rcpLenLVN \cdot H = (H \cdot L + N \cdot V) * rcpLen_{LV}
  • LH=VH=rcpLenLV+rcpLenLVLVL \cdot H = V \cdot H = rcpLen_{LV} + rcpLen_{LV} * L \cdot V
    • (LH=12L+V=122+2LV=12(2+2LV2+2LV)=(1+LV)12+2LVL \cdot H = \frac{1}{2}|L + V| = \frac{1}{2}\sqrt{2+2L \cdot V} = \frac{1}{2} \left( \frac{2+2L \cdot V}{\sqrt{2+2L \cdot V}} \right) = (1+L \cdot V)\frac{1}{\sqrt{2+2L \cdot V}}による)

本日のトークのロードマップ

  • 一般的なマイクロファセットベースBRDF
  • GGX+Smithマイクロファセットモデルによるディフューズのシミュレーション
    • シャドウイング/マスキング関数
    • パストレーシング
  • 🟦他のディフューズBRDFとの比較

でも、まずは…

  • DisneyのBRDFスライスをサクッと理解するのが良い

DisneyのBRDFスライス

  • BRDFは2つの極ベクトルの4D関数である
  • 以前は、光線と視線のベクトル: θl,ϕl,θv,ϕv\theta_l, \phi_l, \theta_v, \phi_v
  • 以後は、半角と差分: θh,ϕh,θd,ϕd\theta_h, \phi_h, \theta_d, \phi_d
    • 等方的なBRDFではϕh\phi_h一切依存しない
    • ϕd\phi_dへの依存はしばしば無視できる

DisneyのBRDFスライスの直観

  • 各行は光線と視線の組である(θd\theta_d)
    • 上端で反対、中央で垂直、下端で一致
  • 左から右へはスペキュラハイライトの中心から離れることでの減衰を示す(θh\theta_h)

照らされた球での間違った色の例

明るい線は球で使われる行を強調する

明るい線はϕd=90\phi_d = 90^\circを強調する

ϕd\phi_dは反時計回りに増加する

DisneyのBRDFスライス

球上でのθh,θd,ϕd\theta_h, \theta_d, \phi_dの振る舞い

DisneyのBRDFスライス

  • 様々な恒等式:
    • cosθh=NH\cos\theta_h = N \cdot H
    • cosθd=LH=VH\cos\theta_d = L \cdot H = V \cdot H cos2θd=LV\cos 2\theta_d = L \cdot V
    • cosϕd=NVNL(22LV)(1(NH)2)\cos\phi_d = \frac{N \cdot V - N \cdot L}{\sqrt{(2 - 2 L \cdot V) (1 - (N \cdot H)^2)}}
  • BRDFは主にNHN \cdot HLVL \cdot Vの関数である!

BRDFを比較する準備はほぼ完了!

  • まずは、比較フォーマットを導入する

新しいモデル

タイトルはどのディフューズモデルが示されるかを表す。

このintroは新しいモデルを用いる。

新しいモデル

←このパネルは前の例と同様の照らされた球を示す。

新しいモデル

←一致するBRDFスライスがここに示される

←(相関のないGG)

0から1へのα\alphaを持つ同様の完全なBRDFだが、Paul DebevecのHDR環境プロブで照らされる

↗ uffizi

→ grace

↘ campus

Lambert

Disney

Oren-Nayar、σ=0.5α\sigma = 0.5\alpha

新しいモデル

新しいモデル(ハイブリッド)

SmoothはDisneyのfd90=0.5f_{d90} = 0.5を用いるので、α=0\alpha = 0のときはDisneyと同様になる。

新しいモデル(安価)

SmoothはLambertを使用

Lambert

Disney

新しいモデル

Lambert

Disney

新しいモデル

Lambert

Disney

新しいモデル

スペシャルサンクス

  • Mark Cerny
    • GDCメンター
  • Chad Barb、Xin Liu、Steve Marton
    • この研究に素晴らしいアイデア/フィードバックをくれたRespawnの同僚のエンジニア(いつも通りに)

選抜した参考文献

ご質問は?

付録

  • 以下はレイトレーシング定式化からのSmithのシャドウイング/マスキングに対する導出のまとめであり、パストレーシングを実際に行うのにそれを使う方法である。これは私が先のプレゼンテーションに含まれる結果を得た方法である。
  • これはかなり仰々しい数式である。なので、トークより付録にあるほうがふさわしい。聞き手が導出を読むのは難しいし、聴くのはもっと難しい!こういうのは自身のペースで進めることができるほうが良いし、必要に応じて振り返って見直しできるほうが良い。
  • 最終警告: これらの付録スライドはそんなに推敲しなかった(例えば、図が完全に欠落していたり)。それでも、この情報と導出は由来を理解するのが好きな人やSmithのシャドウイング/マスキングの導出を理解したい人には有用だろう。

解法 --- パストレーシング

  • 光の方向でマイクロサーフェスにフォトンを放つ
  • これらのフォトンがどの視線方向に現れるかを確認する
  • これはディフューズとスペキュラの相互作用をモデル化させる
  • だが、はじめに、マイクロサーフェスをレイトレースできるようにしなければならない
  • マイクロサーフェスは法線分布関数D(m)D(m)とシャドウイング/マスキング関数G(L,V,N)G(L, V, N)によって暗黙的に定義される
  • D(m)D(m)から導出されるG(L,V,N)G(L, V, N)は基本的にレイトレーシングである
  • なので、SmithのG(L,V,N)G(L, V, N)が動作する方法を理解する必要がある

Smithの導出を開始

TODO