graphics.hatenablog.com

技術系テクニカルアーティストのあれこれ

Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs (1)

Research Report n° 8468 — February 2014 — 47 pages
Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs
Eric Heitz, Project-Team Maverick
http://hal.inria.fr/hal-00942452

Abstract
 このレポートは、マイクロファセットBRDFの幾何減衰項 (G項) (masking-shadowing functions) について「よくある疑問」に答えるために書かれたものだ。G項は、マイクロサーフェスを視線方向に射影した、マイクロサーフェスの可視領域を決めるためのものだ ということを念頭に置いて、その領域上での法線分布と、そこから導出されるマイクロファセットBRDFの一般形式について述べる。

 正しいマスク関数 masking function を使わないとBRDFを正しく正規化することはできず、正規化された Smith の式 the generalized form of Smith's masking function を用いることでそれを行うことができる。V-cavity model がディスプレースメントマップよりもノーマルマップに近い考え方であることにも触れ、そのせいでこのモデルがグレージング角 grazing angle において物理的に正しいスペキュラハイライトを生成できないことを説明する。

 最後に、マイクロファセット理論に関する将来の研究について紹介する。例えば、マスク関数を引き伸ばす strech することで異方性のマイクロサーフェスを素直に扱うことができないか、複数回の散乱を扱うモデルはつくれないかについて議論する。


1 Introduction
 このレポートには以下の事柄が述べられており、

  • マイクロファセットBRDFについての「よくある疑問」についての答え
  • マイクロファセットBRDFの幾何減衰項を選ぶときの考え方

以下の事柄には触れていない。

  • 新しいBRDFモデルの提案
  • 具体的にどのモデルを採用すべきか
  • BRDFモデルの実装やレンダリングテクニック

 なお、2.4, 4.4, 6.3 が主題であり、他は、マイクロファセット理論をよりよく理解するための補足である。



凡例
f:id:hal1932:20140212042433j:plain

2 Derivation of the Masking Function
 「マイクロサーフェスの可視領域」の定義と、それをマイクロファセット理論に適用することでマスク関数の導出を考える。


2.1 Measuring Radiance on a Surface

 複数の面が1ピクセルの中に描画されるとき、そこに記録される放射輝度は、それぞれの面からの放射輝度 L(\omega_o,x) を重み付け加算したものになる。この重み付け係数として、「視線方向に射影された領域」の大きさが使われる。f:id:hal1932:20140212041421j:plain
このとき、射影領域の積分(式(1)の分母)で結果を割ることで、エネルギー保存を担保することができる。
f:id:hal1932:20140212041851j:plain
 よって、この「領域」を決めるための幾何減衰項が、エネルギー保存を担保するための正規化係数としての役割を負う。


2.2 Microfacet Projections

 マイクロファセット理論における「射影された領域」として、以下の3パターンが挙げられる。
f:id:hal1932:20140212042557j:plain
(a) Projection onto the Geometry
 1区画内にあるマイクロファセットを、そのジオメトリ上に射影した領域。1区画あたりの面積は慣習的に1とされるので、この場合は D(\omega_n)正規化されている必要はない。

(b) Projected Area of the Unit Patch
 上記「1区画」にあたるジオメトリを、視線方向に射影した領域。いわゆる「コサイン項」が領域の大きさになる。

(c) Visible Projected Area of the Microsurface
 「1区画」内にあるマイクロサーフェスのうち、視線方向から見える領域だけを、視線方向に射影した領域。\langle \omega_o,\omega_n \rangle を使うことで背面カリングされるマイクロサーフェスを除去している点に注意。D(\omega_n) がマイクロサーフェス法線 \omega_n の確率分布関数であり、G_1(\omega_o,\omega_n) \in [0,1]\omega_n が視線方向 \omega_o から見える方向を向いている確率を表している。「見える方向を向いている法線を持つマイクロサーフェス」を射影した領域が「射影領域」となり、図の黒く塗りつぶされた領域を「幾何減衰項がマスクする masking 領域」と呼ぶ。


2.3 Masking Function G_1

 マイクロファセット理論においては、通常、「どれくらいマスクされるか」と「マイクロファセット法線の方向」は互いに依存しないことが前提となり、これらの非依存性が幾何減衰項を立式するときの制約となる。

A Constraint on the masking Function
 上記 (b)(c) より以下の等式が成り立ち、これが幾何減衰項の制約となる。
f:id:hal1932:20140212045912j:plain

Normal/Masking Independence
 マイクロファセット法線 \omega_n は各マイクロファセットごとに決まるローカルな値なのに対して、そのマイクロファセットがどれくらい遮蔽されるかは視線方向との相互作用によって決まる。よって、\omega_n と、遮蔽を決める G_1(\omega_o,\omega_n) とは、互いに独立したものとして捉えられる。また、これは \omega_n が背面カリングされないマイクロファセットの法線だけを含む場合のみに成立する。(背面向きの場合は「どれくらい」とかではなくすべて遮蔽されてしまう)

 というわけで、G_1(\omega_o,\omega_n)\omega_n積分の外に出すことができる。
f:id:hal1932:20140212051802j:plain

Integral Form of the Masking Function
 式(5)の左辺に式(6)を代入して、背面向きマイクロファセットの場合は (\omega_o \cdot \omega_n) = 0 であることを踏まえて整理すると、 G_1(\omega_o,\omega_n) を以下のように定義できる。
f:id:hal1932:20140212052108j:plain

Smith's masking Function
 マイクロファセット法線 \omega_n の張る空間で定義された式(9)を、マイクロファセットのスロープの張る空間に射影すると、正規化された Smith の式 the generalized form of Smith's masking function に一致する。したがって、マイクロファセットBRDFにおいて法線とマスクは独立しており、その前提に従う限り、Smith の式は正しいということになる。

Smith's Averaged masking Functions
 Smith の論文を読むと、BRDFを考える上では無視できる「背面向きの法線」も考慮した理論が構築されている。サーフェス全体の性質を考える上では背面向きサーフェスのことも大事だけど、BRDFを考えるときは気にしなくていい。いずれにせよ、見える範囲での放射輝度積分して、マイクロサーフェス全体ではなくその範囲での正規化を考えることが、BRDFでは重要だ。


2.4 Summary

 「幾何減衰項には結局どれを採用すればいいの?全部物理的に正しい?」という疑問へのよくある答えとして、「法線分布を正しく考慮している Smith の式を使うのがいい」というものがある。しかし、この章での考察をまとめると、

  • 視線方向に射影されたマイクロサーフェスの領域の大きさは、同じく射影されたジオメトリ(マクロサーフェス)の大きさに一致する
  • この「一致」が、幾何減衰の式の制約となる
  • マイクロファセットBRDFにおいては、マイクロファセット法線の向きと「どれくらい遮蔽 masking されるか」は関係ない
  • この前提に従うのであれば、幾何減衰項は正規化されたSmithの式に一致する

 ここで大事なのは、Smithの式を選ぶ正しい理由は「法線と遮蔽が無関係のときに導出される正しい式だから」ということだ。とはいえ、現実世界を計測したモデルと完全に一致するわけではない。ただそれは式の導出が悪いのではなく、その前提となる法線の分布モデルだとか、法線と遮蔽は無関係であるとする前提に、問題がある。


次回 へ続く。