Real-Time Polygonal-Light Shading with Linearly Transformed Cosinesをよんでみる

今回紹介させていただく
Real-Time Polygonal-Light Shading with Linearly Transformed Cosinesは、リアルタイムレンダリング向けのエリアライト(面光源)技法についての論文となっています。いきなりですが、3章から読んでみたいと思います。Eq(式),Fig(図)はオリジナルの論文を参照してください。5.2章までとなってます。

3.Linearly Transformed Spherical Distributions
線形変換された球面上の分布

この章では、線形変換された球面上の分布(Linearly Transformed Spherical Distributions, LTSDs)について説明します。オリジナルの分布の方向ベクトルに線形変換を適用することで、オリジナルの分布がどのように変形できるかをFig.2に示します。この手法によって出来た新しい分布をFig.3に定義します。また、これらの特性について議論していきます。

Fig.3

3.1 Definition – 定義

Original Distribution to be Transformed – 変形されるオリジナルの分布について

Doをオリジナルの分布とし、これを線形変換を用いて再パラメータ化(訳注:望みの分布に近い形状になるようにパラメータ化)します。Fig.3で示したように、どのDoを選択するかによって、変形される分布の基底となる形状を決定します。

Linear Transformations – 線形変換

新しい分布Dを生成するため、3×3マトリクスで示されるMの線形変換を、Do上のωoで示される方向ベクトルに適用します。Fig.2に、Mがどのように分布の特性に影響を与えるか示します。ここで注意なのですが、この論文を通して、方向ベクトルは正規化されることを前提とします。つまり、Mを介した線形変換は正確には、ω=Mωo/|Mωo|で、逆マトリクスを適用し、基底分布の方向ベクトルを復元する場合も、ωo=M^-1ω/|M^-1ω|となります。(訳注:実はこの正規化が、変換を非線形にする(場合もある)。詳しくは論文の脚注参照のこと)

Closed-Form Expression – 閉形式表現

あるLTSDの大きさ(magnitude)は、Doにおけるωoに、球面上の変換によるゆがみによって生じた立体角の変化を乗算したものになる。これは閉形式であらわすことが出来る。

式中の、∂ωo/∂ω = |M^−1|/||M^−1ω||^3が、線形変換された正規化方向ベクトルω = Mωo/||Mωo||のヤコビアンとなっている。ヤコビアン∂ωo/∂ωの導出はAppendixAに記されている。

Shape Invariance – 形状不変

スケーリングの変換(M=λI)に対して、ベクトルの方向は変化しないから分布は不変である。さらに、回転の変換では、分布の方向を変化させるだけで、分布の形状は変化させない。これは、変換マトリクスMがスケーリングやローテーションの場合は、先のヤコビアン∂ωo/∂ω1となることからもわかる。

Median Vector – 中央ベクトル

いくつかの一般的な分布であるDoにおいて、z-vector(0,0,1)^Tは中央ベクトル、すなわち、このベクトルを含んだどんな平面も、Doの分布をちょうど半分に分ける。この特性は、線形変換を経ても保持されている。変換された中央ベクトルは、変換された分布Dの中央ベクトルになる。Fig. 2内の全ての形状はのMの右側の列は(0,0,1)^Tで、中央ベクトルはそのままz軸に沿ったままとなる。例えば、Fig.2.dのせん断変形の分布は、片方がつぶされ、反対側が引きのばされているが、z軸は分布の中央を保っている。(俺的メモ:Fig.2.dの色で表される分布は少々おかしい気がする。一方でベクトルで表される分布は正しいように見える。)

3.2 Properties – 特性

変換された分布Dはオリジナルの分布Doのいくつかの特性を、引き続き保持する。

Normalization – 正規化

LTSDを経た分布Dのノルムは、オリジナルの分布Doのノルムに準ずる。Eq(1)を用いて、Eq(2)を得ることが出来る。

Integration over Polygons – ポリゴン形状の積分

LTSDの分布DのポリゴンPで示される領域の積分は、オリジナルの分布Do上のポリゴンPo=M^-1Pで示される領域の積分である。PoMの逆変換マトリクスをPの各頂点に適用して得られる。

ここでもEq(2)と同様の変数変換となる。Fig.4に、この結果を示す。Eq(3)は分布D内のある方向ベクトルのサンプルがポリゴンPと交差するかの確率を表すのは自明である。(訳注:Doが確率密度関数ならば。)どんな線形変換の適用も、分布D内の方向ベクトルとポリゴンPの交差状況を変えることはなく、結果、積分の値も保存される。
この特性を利用して、M^-1を適用し、オリジナルの分布Do内のポリゴンPo=M^-1Pへと変換する。そして、分布DにおけるポリゴンPの積分は、分布DoにおけるポリゴンPoの積分に等しいという結果を得る。

Importance Sampling – 重点サンプリング

LTSDの定義により、Doを重点サンプリング可能ならば、Dにおいても可能ということになる。Algorithm 1で示したとおり、Do内のランダムサンプルωoを生成し、これをω = Mωo/||Mωo||で変換する。LTSDの定義で示したEq(1)のとおり、この変換のヤコビアンを乗算することにより、ωの確率密度関数はD(ω)そのものとなる。


Algorithm 1 – Importance sampling


4. Approximating Physically Based BRDFs with Linearly Transformed Cosines
線形変換されたコサインによる物理ベースBRDFの近似

この章では、クランプされたコサイン分布をオリジナルの分布とし、物理ベースBRDFの良い近似となる、線形変換された分布のセットを作成する。

Linearly Transformed Cosines – 線形変換されたコサイン、LTC

オリジナルの分布をDoとして、z軸方向の半球にある、クランプされた正規化コサイン分布を使用する。

線形変換されたコサイン(LTCs)は、このDoEq(1)に代入することで定義される。

Fitting – フィッティング

現在もっともリアルなパラメトリックBRDF[Hill et al. 2015]と考えられている、GGXマイクロファセットBRDF[Walter et al. 2007]を近似をする。これは、ライトの方向ωlとしたときに、コサインでウエイト付けされたBRDFで与えられる球面関数を近似するということである。

等方性のマテリアルの場合、BRDFは、インシデントの方向(訳注:と法線の成す角度)ωv=(sin θv, 0, cos θv)とラフネスαに依存する。全ての組み合わせの(θv,α)において、LTCを、コサインでウエイト付けされたBRDFにフィットさせる。つまりよくFitしたマトリクスMを探す。等方性BRDFの平面対称性とLTCはスケールに対して不変であることより、Mは以下のように表現することができる。

(俺メ:X,Y方向のスケーリングと、[X,Z]平面におけるせん断の変形のみのマトリクスってことか。これなら、XZ平面での対称性がある。LTCがスケールに対して不変というところは良く分からない。m33を1と定義できる事を意味しているのかも。)

なので、4つのパラメータをFittingすればよいということになる。経験的に、L3エラーを最小化すればシェーディングにおいてもっとも良い結果が得られることが分かった。(俺メ:差の3三乗を誤差関数とするの意だと思う。これにより、分布の中で値が大きいエリアが、誤差関数においてより大きな意味を持つことになり、結果、値の小さいエリアに比べて、大きいエリア(目立つエリア)がより正確にフィッティングされることになると思われる。だから、シェーディングにおいてL3をフィッティングの誤差関数に使うと良いということだと思う。)
Fig. 5にフィッティングの結果を示す。

Fig.5

Representation and Storage – 表現形式と格納領域

Eq(3)に示されるポリゴンの積分には、M^-1のマトリクスのみが必要である。フィッテイングの後、この逆変換マトリクスを事前計算されたテーブルに格納する。Eq(6)と同様にM^-1は4つのパラメータで等方性BRDFを表現できるが、これに加え、ノルムとしてコサインでウエイト付けしたBRDFを半球積分した値(INTΩ (ρ(ωv, ωl) cos θl) dωl)を格納している。合計5つのパラメータを2Dの64×64の浮動小数点テクスチャにθ∈[0, π/2]√α∈[0, 1]の範囲で格納しておき、線形補完でサンプリングする。事前計算されたデータのサイズは80KBである。(俺メ:デモ実装ではもう一要素フレネル用のパラメータを格納している。)

5. Real-Time Polygonal-Light Shading with Linearly Transformed Cosines
LTCによるリアルタイムのポリゴンライトシェーディング

指向性のないポリゴンライトによるシェーディングは、照度をポリゴンドメインでの積分を計算することである。

それぞれ、ωvが視線方向、ρがBRDF、Pがポリゴンで、LがポリゴンからのRadianceで受光の方向はωlとする。
LTCの特性を活用するため、ランタイムでは、D項に相当するLTCのマトリクスM^-1を、BRDFにおける インシデント角θvとラフネスαに基づき取得する。そしてEq(5)の近似をEq(7)にあてはめる。

5.1 Shading with Constant Polygonal Lights
コンスタントポリゴンライトによるシェーディング

ポリゴンライトからのRadianceが空間的に一定ならば(L(ωl) = L)積分の中の乗算は分離可能になる。

ポリゴンの積分の特性Eq(3)を用いて単純化すると、

ここでのEはポリゴンPo=M^-1PによるIrradianceである。Doはクランプされたコサインの分布なので、ポリゴンPo形状のDoの積分が、ポリゴンPによるIrradianceとなる。これは、閉形式表現があり、[Baum et al.1989]

j(i+1) mod nである。この式は、球面上のポリゴンが上半分(z>0)に位置していると仮定している。実際には、ポリゴンの各エッジをクリッピングしてEq(11)を計算している。

まとめ

今回は、エリアライトをリアルタイムで、解析的に計算する方法についての解説部分に焦点を絞って、見てみました。私的に、いくつか理解の足りない部分がありますが、基本的には、積分したい範囲を、コサインローブの上に逆変換し、積分するという解釈でよさそうです。コサインローブ上の多角形表現の積分は、引用論文である、Improving radiosity solutions through the use of analytically de-termined form-factors.[Baum et al.1989]にあるようです。まだ見ていませんが、ランタイム上で解くことが可能な形式だと思います。
フィッティングに関しては、具体的な方法は提示されていませんが、説明されているとおり、線形変換なので、GGXの計算結果をサンプルデータに使って、フィッティングをかければ、特に難しい部分はないと思います。
ご紹介させていただいた論文には、TexturedLightingに関する説明もあるので、興味のあるかたは是非そちらも参照ください。