前回 の続き。
ラフネスの変更を「マイクロサーフェスの引き伸ばし」と捉えて、それが幾何減衰項に与える影響を取り上げる。ていうかこの章、数式の導出によくわからないとこがたくさんあって、ちゃんと理解できた自信が正直あんまない。
3 Stretching Invariance of the Masking Function
3.1 Masking Probability Invariance
マイクロサーフェスを輪切りにした1次元構造を考える。視点を変えずにこれを2倍に引き伸ばしたとき、各マイクロサーフェスからのビューベクトルの傾きは になって、その傾きの分布関数のサポートも になる。ところが、引き伸ばす前に遮蔽されていたマイクロサーフェスは引き伸ばしたあとも相変わらず遮蔽されているし、引き伸ばす前に遮蔽されていなかったものは、遮蔽されないまま残る。つまり、各マイクロサーフェスの遮蔽率 masking probability は引き伸ばしの影響を受けず、遮蔽率分布関数の形状 shape は変化しない。
3.2 Shape Invariance of the Distribution
いくつかの等方性 BRDF では、ビューベクトルの分布がラフネス に依存するため、 を変化させるとその分布形状も変わる。ここで、ジオメトリ法線 の傾きとラフネスとの比率 のみに依存して分布形状が変わる この性質を、分布関数のラフネスに対する形状不変性 shape invaliance と呼ぶことにする。
BRDF のマスク関数 (確率分布関数) はビューベクトルの分布に依存して決まるため、これはつまり、ビューベクトルの傾きを として、マスク関数は のみに依存することになる。Beckmann と GGX に関しては、それらの陪関数 associated functions が に依存することがわかっているため、この2つの関数は形状不変性を持つのだといえる。
ちなみに「陪関数」というのはその関数の特徴量みたいなもので、フーリエ級数的な、Spherical Harmonics にもでてくる量子力学の概念、らしい。
3.3 Deriving Masking Functions for Shape-Invariant Anisotropic Distributions
同様の形状普遍性は、異方性 BRDF においても確認することができる。そのときの係数 は、2軸に沿ったジオメトリ法線の傾き と 、引き伸ばし係数 と を用いて以下のように書ける。
このように引き伸ばしたときのビューベクトルの傾きの分布関数 (2次元分布) は以下の図の通り。1次元のときの同様に形状普遍性が保たれているのがわかる。
この性質を使って、等方性 BRDF から異方性 BRDF を導出することができる。細かい数式と Beckmann/GGX の例がこの論文には載ってるけど、超ややこしいので以下略。
3.4 More Generalization
Arbitrary Shape-Invariant Distributions
形状不変性について重要なのは、マスク関数を構築するのに必要なすべての情報が、ラフネスや異方性に関わらず、ひとつの陪関数の中に詰まっているということになる。逆に言えば、陪関数さえうまく定義できれば、以下の式を使って任意の法線分布関数を導出できることになる。
式中の f が陪関数で、c がそれを正規化するための定数パラメータ。
Non Asix-Aligned Stretching
以下の 2x2 行列を使って、軸に沿わない引き伸ばしも定義できる。
はそれぞれの軸上での引き伸ばし率の相関係数。) を使って の2乗ノルムを定義できるので、それに従って引き伸ばされたあとのラフネスを計算できる。例えば の場合、以下のようになる。
Vertical Shearing and Non-Centered Deistributions
最後のマイクロサーフェスの縦方向シフト vertical shearing について。ここではマイクロファセットの各面を平均した面をメゾサーフェス mesosurface と呼ぶことにして、その辺を だけ縦に移動させたケースについて議論する。
移動前のビューベクトルは 0 を中心とする分布になっていて、これはメゾサーフェスがマクロサーフェス (そのマイクロファセットが存在しているジオメトリ面) と平行であるという状態を指す。ただしバンプマップやノーマルマップ、ディスプレースメントマップなどでマクロサーフェスの法線を変更してしまった場合は、これにあたらない。この場合、マップ適用後のビューベクトル分布は原点からズレていることになり、縦方向シフトが行われた状態であると見做せる。
幸運なことに、縦方向シフトが行われた状態でも BRDF を正しく適用できることは既に知られており、法線分布 (D項) の議論とは別に、マスク関数のオフセット係数 と移動後のラフネス は以下の計算で求められる。なお、縦方向シフトでビューベクトル分布の形状が変わらないことは明らかであり、ラフネスを求める式は「軸に沿わない引き伸ばし」のときと同じになる。
気をつけなければいけないのは、これはあくまで「ビューベクトルの張る空間」上で成立する議論であり、「法線の張る空間」上では成り立たない。ラフネスを変えずに法線だけを回転させるようなケースでは、その回転をビューベクトル空間に射影すると非線形な操作になってしまう ため、議論を変える必要がある。
併せて、BRDF における 視線方向に射影された領域 についても補足しておく。この大きさはメゾサーフェスの法線の角度から計算するものであるため、引き伸ばしの結果をビューベクトルのコサイン項 に反映する必要があるようにみえる。これはメゾサーフェスの法線を として で求められるが、メゾサーフェスとマクロサーフェスが一致している以上、 であり、結局のところ に引き伸ばしの影響は及ばない。更に詳しい議論は LEADR mapping の論文(PDF) を参照のこと。
次回へ続く。