超雑訳 Cache and Bandwidth Aware Real-Time Subsurface Scattering (3)

こんにちわ、Pocolです。
前回に引き続き5章を見ていくことにします。
前回までの内容は下記を参照してください。


Chapter 5: Subsurface Scattering

あなたが年をとり、白髪になり、眠りが深くなり、火のそばでうとうとしているとき、この本を取り、ゆっくりと読み、あなたの目がかつて持っていた柔らかい表情と、その深い影を夢見るのです。
― William Butler Yeats

 

 リアルタイムアプリケーションでは、半透明の度合いが異なるリアルな表面下の散乱をシミュレートすることは容易ではありません。Burleyの反射率近似は、経験的に拡散プロファイルを全体的にフィットさせるため、スクリーン空間における異なる半透明材質のリアルな表面下散乱を実現することが可能です。しかし、物理的に正しい結果を得るには、フレームごとにピクセルごとに解析的重要度関数をリアルタイムでモンテカルロサンプリングする必要があり、これは実現が困難であると思われます。本章では、リアルタイムで評価するのに適した重要度サンプリング関数の近似を提案します。また、光勾配の変化など特定の領域で表面下散乱が顕著になることから、リアルタイムレンダリングのために、要求の高い領域に多くのサンプルを配置する新しい重要度サンプリング手法、適応的フィルタリング重点サンプリング(AFIS)を提案します。このアルゴリズムは、リアルタイムアダプティブサンプリングにより、サンプル要求を最小化します。また、フレームごとにオンラインで生成される放射照度テクスチャのミップマップを利用することで、帯域幅の需要も削減することができます。さらに、異なる性能を持つGPU上での実行を可能にするため、ユーザーが異なる表面下散乱加速技術(すなわち、AFISとSeparable)をオンラインで切り替え、計算要求と品質のバランスをとることができる枠組みを提案します。図 5.1 は、異なる距離での表面下散乱の結果を示しており、AFIS を用いた場合、合計で最大 91.07 x まで高速化されたことを示しています。Separableは、安定した性能を得るためにオンにすることができます。

※図は[Xie 2021]より引用

5.1 Efficient Sample Generation

 本節では、サンプリング関数の近似とサンプリングシーケンス生成の手順について述べます。

5.1.1. Sampling Function

 表面下散乱の出射輝度(式2.38)は、極座標で次のように表すことができます。

\begin{eqnarray}
L_o(p, \omega) &=& \int_{\partial {\mathbf \Omega}} 2 \pi r_q R(r_q) \\
&=& \int_{{\mathbf S}^2} C F_t(p, \omega) F_t(q, \omega_i) L_i(q, \omega_i) \langle \omega_i, n_q \rangle d\omega_i dr_q \tag{5.1}
\end{eqnarray}

上式は\(p\)におけるモンテカルロ推定器に一致し,次のようになります。

\begin{eqnarray}
Lo = \frac{1}{n} \sum_{j=1}^{n} \frac{ 2\pi r_{q_j} R(r_{q_j}) \cdot L_{q_j} }{ pdf_{q_j} } \tag{5.2}
\end{eqnarray}

ここで、\(L_o\)は散乱結果、\(r_{q_j}\)と\(pdf_{q_j}\)は\(j\)番目のサンプルの中心\(p\)とPDFへの放射量です。\(L_{q_j}\) は \(q_j\) での累積拡散放射照度です。この式を解くには、効率的な2次元サンプリングシーケンス\((\xi_1, \xi_2)\)とは別に、半径サンプリング用のCDFに基づく密度関数を重要視してサンプリングする必要があります。

\begin{eqnarray}
cdf(r) = 1 – \frac{1}{4} e^{-r/d} – \frac{3}{4} e^{-r/(3d)} \tag{5.3}
\end{eqnarray}

 Christensen [2015]は、2つの指数の多重点サンプリング(MIS)、ニュートン反復、またはルックアップテーブルを使用することを提案しています。Golubev [2019]は解析的な逆解を次のように導出しました。

\begin{eqnarray}
cdf^{-1}(\xi) &=& 3d \cdot {\rm log} ( \frac{1 + G(\xi)^{-1/3} + G(\xi)^{1/3} }{ 4\xi } ) \tag{5.4} \\
G(\xi) &=& 1 + 4 \xi (2 \xi + \sqrt{1 + 4 \xi^2}) \tag{5.5}
\end{eqnarray}

代わりに、\(cdf^{-1}(\xi)\) [Xie et al., 2020] を近似する、より単純な関数 \(g(\xi)\) を用いることを提案します。

\begin{eqnarray}
g(\xi) = d((2-c) \xi – 2) {\rm log}(1 – \xi); \tag{5.6}
\end{eqnarray}

ここで、\(c\) は関数の減衰を制御するためのパラメータです。\(c=2.5715\) のとき、最小二乗非線形カーブフィッティング [Coleman and Li, 1996] を用いて最適化した \(cdf(g(\xi | c))\) vs \(\xi\) の平均二乗誤差が許容誤差 \(10^{-6}\) で最小となることがわかる。図5.2にCDF関数と近似誤差を示します。
 これは逆CDFの近似であるため、これを用いて生成されたサンプルはBurley PDFの(近い)近似でしかありません。その品質を評価するために、図5.3は解析的逆行列と我々の近似がどれだけ近いかを示しています。ビーム光のシナリオ(図5.3(b))では,円形光(10 flux)の半径は1cmである。図にズームインすると、散乱距離の小さな縮小が観察されますが、通常の視距離では無視できる程度です。さらに、我々の近似をPBRT [Pharr et al., 2016]に実装し、ビルトインのMIS法と比較しました。図5.4は、headシーンを用いたPBRT内のレンダリング比較です。\(dmfp\)パラメータはJensenら[2001]のskin1設定に由来するものです。我々の近似は,2K spp.のマルチインポータンスサンプリングと比較して,1.87%という小さなRMS誤差を有しています。

※図は[Xie 2021]より引用

※図は[Xie 2021]より引用

※図は[Xie 2021]より引用

5.1.2 Sampling Sequence

 図 5.5 は,拡散平均自由行程を 1.0,サーフェイスアルベドを 0.8 として,表面下散乱のサンプリングシーケンスを生成して使用している様子を示しています。ピクセル位置\(p\)とフレーム時間\(t\)をハッシュとして、各フレーム中の種空間へのインデックスを作成します。Jarzynski and Olano [2020]による16ビットフォーマット用の最適なハッシュ関数pcg3d16を選択し、3次元ベクトルを1次元のシードインデックスにハッシュ化します。各フレーム中のこのインデックスで、各サンプルに対してインデックスを1ずつ増加させることによって、\(n\)個の連続した2Dサンプルを生成します。2次元の\(R_2\)シーケンスは、簡単な式で効率的にオンラインで生成されるため、この目的に最適であることがわかります。その品質はリアルタイムソボルシーケンスと同等です。\(R_2\)シーケンス[Roberts, 2018]は

\begin{eqnarray}
t_m &=& m \psi, \quad m = 1, 2, 3, \cdots \tag{5.7} \\
\psi &=& \left( \frac{1}{\phi_d}, \frac{1}{\phi^2_d}, \cdots \frac{1}{\phi^2_d} \right) \tag{5.8}
\end{eqnarray}

ここで、\(\phi_d\) は \(x^{d+1} = x + 1\) の一意な正根であり、\(d\) は各サンプルの次元です。
 ブルーノイズサンプリングシーケンスは、サンプル数が少ないときに、最も優れた知覚品質を発揮する。しかし、リアルタイムエンジンでの利用は、生成時間が長くなるか、ルックアップテーブルの容量が大きくなるため、帯域が重要な我々のアプリケーションでは利用できない。そのため、帯域幅が重要な我々のアプリケーションでは利用できない。しかし、それは本論文の範囲外である。

※図は[Xie 2021]より引用

5.2 Adaptive Filtered Importance Sampling

 表面下散乱では、以下の式のモンテカルロ積分を行うために、GPU上で各\({\mathbf q}\)におけるサンプルなどを効率的に取得する必要があります。

\begin{eqnarray}
L_o (p) = \int R(q) b(p, q) dq \tag{5.9}
\end{eqnarray}

ブルートフォースモンテカルロ推定で方程式を解く代わりに、事前フィルタ済みサンプリングでサンプリング情報を増やすことを検討します。プレフィルタリングは環境マップの重点サンプリング[Krivanek and Colbert, 2008]において、GPU上での効率的なサンプリングに成功しています。その効率的なサンプル数は、フィルタリングステップのために高くなります。例えば、ミップマップの上位レベルをサンプリングするためにサンプルを使用する場合、下位のミップから4つのサンプルを平均化することと等価である。私たちのアプリケーションでは、サンプル要求を減らすために、スクリーン空間散乱放射照度のサンプリングにこれを使用しています。
 式5.9から、空間的に変化するプレフィルターを用いて、\({\mathbf p}\)での中心に対する表面下散乱のためにスクリーン空間放射照度キャッシュ\(b\)をフィルタリングすることにより、\({\mathbf u}_i\)でのフィルタリングサンプルを導き出した(\({\mathbf p}\)は積分内で変化しないので単純化のために削除した)。

\begin{eqnarray}
{\mathcal S}_{ss} ({\mathbf u}_i) &=& \int \frac{R({\mathbf q})}{p({\mathbf q})} b({\mathbf q}) \lbrack h({\mathbf u}_i – P({\mathbf q})) p({\mathbf q}) w(s) \rbrack ds \tag{5.10} \\
&\approx& \frac{ R(P^{-1}({\mathbf u}_i)) }{ p(P^{-1}({\mathbf u}_i)) } \underbrace{\int b({\mathbf q}’) \lbrack h({\mathbf u}_i – P({\mathbf q}’)) p({\mathbf q}’) w(s) \rbrack ds}_{{\rm Pre-filtered mipmap} {\bar b}({\mathbf q}, l)} \tag{5.11}
\end{eqnarray}

ここで、\({\mathbf q}’=W(s)\),\(s = W^{-1}({\mathbf q})\)は世界空間(mm)の点\({\mathbf q}\)を画面空間のテクスチャ座標\({\mathbf s}\)に写像します。ヤコビアン行列式は\(w({\mathbf s})\)であり、\({\mathbf q} = P^{-1}({\mathbf u})\)は一様サンプリング空間の座標\({\mathbf u}\)をワールド空間(mm)の座標\({\mathbf q}\)に写像します。ヤコビアン行列式は\(p({\mathbf q})\)です。 \(p(\cdot)\) は確率密度関数。\(h(u)\) はローパスフィルタ(例えばミップマップ作成時の2×2平均フィルタ)です。積分項はミップマップを用いて予めフィルタリングしておき、MIPレベルlで\({\bar b}({\mathbf q}, l)\)として取り出すことができる。\(R/p\)を外に出すことで、フィルタリングされた領域で一定とみなされ、フィルタリング領域が小さく、\(p\)がPDFに比例するため、良い近似となります。

MIPレベル。プレフィルタリングは環境マップの重点サンプリングでよく使われています[Krivanek and Colbert, 2008]。我々は、スクリーン空間散乱放射照度のサンプリングにこれを使用します。具体的には、MIP レベルを次のように生成します

\begin{eqnarray}
l &=& \frac{1}{2} \cdot {\rm max} \left( – {\rm log}_2 \left( \frac{ a \cdot p \cdot {\hat n} }{ {\ell}^2_{\rm max} \cdot t } \right), 0 \right) \tag{5.12} \\
t &=& \frac{w}{D} \frac{w \cdot AspectRatio}{D} = \left( \frac{w}{D} \right)^2 \cdot AspectRatio \tag{5.13}
\end{eqnarray}

ここで,\(\ell_{\rm max}\) は 3 チャンネルサブサーフェイスプロファイルの最大拡散平均自由行程,\(a\) は MIP レベルをスケーリングする定数係数,\(t\) はワールド単位スケール \(w\) を考慮した画面空間でのテクセルサイズ,\(D\) は中心サンプルでのシーン深度です。我々は、\(a = \frac{1}{16}\)が品質と性能の良いバランスを与えることを発見しました。

適応的アルゴリズム。このMIPレベルの定式化により、表面下散乱に対する適応的なフィルタード・インポータンスサンプリングを行うことができるようになりました。すなわち、アルゴリズム2に示すようなリアルタイム適応サンプリングによるフィルタード・インポータンスサンプリングを行います。なお、このアルゴリズムは基本形である。バイラテラルフィルタリングによるにじみなどのアーティファクトを処理するために改良することができます。AFISがプリフィルタード・インポータンス・サンプリング[Krivanek and Colbert, 2008]と大きく異なる点は、サンプル数\({\hat n}\)が適応的に決定され、MIPレベルの選択に影響を与えることができる点である。例えば、周囲の照明が滑らかな場合、AFISはより少ないサンプル数とより高いMIPレベルをもたらし、その結果、適応サンプリングやフィルタード重点サンプリング単独よりも帯域幅の要求を大幅に削減することができます。

※図は[Xie 2021]より引用

5.3 Advanced Design

 このセクションでは、表面下散乱のための2つの異なるレンダリングアクセラレーション技術について検討します。一つは,拡散が既に分かっているため,拡散なしの遠方散乱のみの分散変化を監視するために,適応的フィルタリングによる祷店サンプリングの効率をさらに最適化し,TAAアルゴリズム(近隣ピクセルの時間フィルタ)は,サブピクセルジッタリングによる分散を生じさせます。
 もう一つのアクセラレーションは、ヘテロジニアスなリアルタイムレンダリングのフレームワークに基づいて、ヘテロジニアスなコンピューティング空間を探索するものです。我々は、2つのアクセラレーションを組み合わせて、ハイブリッド表面下散乱を実行する。このアイデアは、リアルタイムレンダリングのホットトピックであるラスタライゼーションとレイトレーシング・パイプラインを組み合わせることに似ています[Barre-Brisebois et al., 2019, Haines and Akenine-Moller, 2019]。このように、サブサーフェス散乱の種類をユーザーによって実行時に変更することで、重要な領域にAFISによる高い品質を与えたり、分離可能なフィルターによる安定した性能を与えたりすることができます。

5.3.1 Unification of Scattering

Scattering decomposition. 実際には\(B(p, q, \omega)\)の解像度のため, 拡散散乱のサンプリング半径を\(r_0 = Z \sqrt{w^2 + h^2} / 2\)とし,\(p\)の深さを\(Z\)とすると,図5.6のように直接散乱(または拡散)領域\(\partial {\mathbf \Omega}_d\)と遠方散乱領域\(\partial {\mathbf \Omega}_s\),\(\partial {\mathbf \Omega} = \partial {\mathbf \Omega}_d \cup \partial {\mathbf \Omega}_s\)に分割します。式(2.38)より、以下のようになります。

\begin{eqnarray}
L_o(p, \omega) &=& L_d(p, \omega) + L_s(p, \omega) \tag{5.14} \\
&=& \int_{\partial {\mathbf \Omega}_d} R(r_q) b(p, q, \omega) dq + \int_{\partial {\Omega}_s} R(r_q) b(p, q, \omega) dq \tag{5.15} \\
&=& B(p, p, \omega) \cdot cdf(r_0) + \int_{\partial {\Omega}_s} R(r_q) b(p, q, \omega) dq \tag{5.16}
\end{eqnarray}

ここで,式5.16の最初の項は,直交座標系から極座標系への変数変更後の解析結果で,直接散乱の被覆領域が一定の照明を持つという仮定で,離散表現\(B(p, p, \omega_o)\)で近似することが可能です。なぜかというとChristensen and Burley [2015]による\(\int_0^{r_0} 2\pi rR(r)dr = A \cdot cdf(r_0)\)だからです。ただし,\(A\)はサーフェイスアルベドとします。簡単のため、この定数は無視します。これは、表面下散乱の後に直接乗算で導入し直すことができきます [Xie et al., 2020]。この式に対して\(r_q ~ pdf(r)\)で重点サンプリングを展開し、対応する累積密度関数(\(cdf\))の逆数\(g(\xi) = cdf^{-1}(\xi)\)を求めると、数値的な近似は次のようになります。

\begin{eqnarray}
E\lbrack L_o(p, \omega) \rbrack \approx B(p, p, \omega) \cdot cdf(r_0) + \\
\frac{1}{m} \sum_{i=n-m+1}^n \frac{2 \pi r_{q_i}R(r_{q_i}) B(p, q_i, \omega) }{ pdf(r_{q_i}) } \left( 1 – cdf(r_0) \right) \tag{5.17}
\end{eqnarray}

ここで、\(r_{q_i}) = g((1 – \xi_i) \cdot cdf(r_0) + \xi_i)\), \(n\)は表面下散乱のサンプル数、\(m = n(1 – cdf(r_0))\)は遠方散乱の有効サンプル数である。この定式化では、拡散にはあらかじめ積分された照明を直接使用し、拡散と散乱の間の重み付けは\(cdf\)に基づいて行われます。

※図は[Xie 2021]より引用

Generalization. 式(5.17)を用いて、与えられた\(\omega\)に対するリアルタイム表面下散乱モデルを次のようにまとめます:

\begin{eqnarray}
L_o(p) = (1 – \gamma) \cdot B(p, p) + \gamma \cdot {\mathcal L}_s(p, R_F, \partial \Omega_s) \tag{5.18}
\end{eqnarray}

ここで、\(\gamma\)は事前積分された直接照明と正規化されていない遠方表面下散乱\({\mathcal L}_s(p, S_F, \partial \Omega_s)\)をブレンドするための遠方散乱エネルギー比、\(R_F\)は対応する表面下散乱プロファイルです。表 5.1 は,様々なモデルにおける\(\gamma\)と \(R_F\) の実現方法を示しています。

※図は[Xie 2021]より引用

Specialization. この一般化により、既存の表面下散乱モデルと、それらがリアルタイムレンダリングに同じように適用されているかどうかを推論する方法が提供されます。例えば,アーティストフレンドリーな可分表面下散乱[Jimenez et al., 2015]は,一定のブレンド係数\(c\)(strength)および\(R_{G_0}\)が最小分散でガウス近似された修正プロファイル\({\tilde R}_d = R_{d, ms} – R_{G_0}\)を使用します。この時のみ、この結果はオフラインダイポールモデルと一致します。

\begin{eqnarray}
c = \frac{ (1 – cdf_d(r_0)) \cdot( B(p, p, \omega) – {\mathcal L}_s(p, R_{d, ss+ms}, \partial {\Omega}_s )) }{ B(p, p, \omega) – {\mathcal L}_s(p, {\tilde R}_d, \partial {\Omega}_s) } \tag{5.19}
\end{eqnarray}

Unified representation. \(\gamma\)はCDFのパラメータ(Burleyの拡散平均自由経路など)、解像度、深度に依存するため、ほとんどの散乱が1ピクセル以下の場合、遠方散乱に対して0sppを可能にするため次のようになります。

\begin{eqnarray}
{\hat m}_{(i)} = \begin{cases} 0 & \gamma \lt \epsilon_u \\ {\hat n}_i \cdot \gamma & {\rm otherwise} \end{cases} \tag{5.20}
\end{eqnarray}

ここで、\(\epsilon_u\)は遠方表面下散乱を行わない場合に決定される小さな定数です。図5.7に\(\epsilon_u\)が異なる散乱領域の例を示します。 \(\epsilon_u = 0.05\)のとき,ほとんどの壁が遠方散乱を必要としません。なお,\(\epsilon_u \gt 0\) のとき,エネルギー損失により推定値にバイアスが生じます。レンダリングにおける他のバイアス推定量の使用と同様に,遠方散乱や分散追跡のために不要なサンプルを削除することができますが,慎重に使用する必要があります。
 この定式化により,まず\({\hat n}_i\)を推定してから遠方散乱のサンプル数\(m_i\)を計算するのではなく,履歴タプル\({\mathcal H}_i = (\mu_i, \sigma^2_i, {\bar m}_i)\)を用いて式4.9で\({\hat m}_i\)を直接推定できるようになりました。そして、遠方散乱のための目標品質\(\sigma^2_0\)を設定します。この切り替えは、時間変化(ジッタリングや照明変化など)による直接散乱の分散寄与が除去されたことも意味します。サンプル数推定には影響しません。

※図は[Xie 2021]より引用

5.3.2 Importance-Guided Acceleration

リアルタイム表面下散乱は、この技術が生まれる以前から、現世代のリアルタイム・レンダリングエンジンやゲーム・レンダリングエンジンに採用されています。異なるアクセラレーション技術には、それぞれの長所と短所があります。例えば、可分近似は、近景ではバンディングアーティファクトが発生しますが、表面下散乱材質がどんなに複雑でも、コヒーレントメモリアクセスにより一貫して高速に実行されます。また、MCサンプリングは動画像の表示には最適ですが、私たちが提案した適応型フィルタード・インポータンスサンプリングを用いても少し高価になります。例えば、図5.1の中央と右の画像では、可分近似がわずかに速く実行されます。フルスクリーンの表面下散乱では、図6.1のControl Variatesによる時間的に安定な適応サンプリングを行っても、Separable近似の方が少し速く実行されます。品質の重要性に基づいて異なる高速化技術を同時に選択することで、表面下散乱をより速く、より高い知覚品質で実行することができます。たとえば、主要なキャラクターモデルには適応型フィルタリング重要度サンプリングを使用し、焦点の合っていない他のモンスターやキャラクターには可分近似技術を使用することができます。この性能と品質のバランスは、すべてのアクセラレーション技術を使用する首尾一貫したレンダリングシステムを作成する動機付けとなります。
 本節では、重要度誘導型高速化を支援するシステムフレームワーク、すなわち、複数の高速化技術(可分近似と適応的フィルタリング重点サンプリング)を同一フレームでサポートすることを提案します。ユーザは設計要件に応じてモデルを切り替えるだけでよく、容易に実現可能です。
 提案手法を示す前に、表面下散乱に対する適応フィルター付き重点サンプリング(5.2項参照)のみを用いたパスビューを図5.8に示します。異なる手法をプレフィルタリングの後に組み合わせたり、ベースカラーの乗算の前に組み合わせたりすることができます。図5.9は、新しい表面下散乱パスの概要を示しています。サブパスは、重要性に応じて、高品質かつ高性能な表面下散乱を可能にする。各パスの詳細な説明は以下の通りです。

※図は[Xie 2021]より引用

※図は[Xie 2021]より引用

  • Setup pass. プロファイルIDを使用してサブサーフェス以外の色をすべてマスクし、拡散と深度を1つのテクスチャにまとめて、プライマリパスサンプリングの帯域幅を節約しています。異なる表面下散乱プロファイルは一意のIDを持つため、それらはスペキュラおよび非サブサーフェスコンポーネントから別々に抽出されます。これらの ID は異なる GPU バッファに集められ、重要度ガイド付きアクセラレーションをサポートします。具体的には、2 つのテクニックID が含まれます。分離可能な近似と適応的フィルタード重要度サンプリング(AFIS)です。最後に、各スレッドグループのテクニックIDを登録し、2つのテクニックバッファに記録します。このとき、異なるサブサーフェスアクセラレーションが通過する。N個の加速度技術実装のネイティブメソッドは、N個のテクニックパスを連結することです。しかし、AFISとSeparableの技術をそれぞれ独立して3パス(つまり、AFISに1パス、Separableフィルタリングに2パス)実装し、それを連結したとすると、両方のテクニックを同時にサポートしても性能上のメリットはないことになります。その代わり、間接ディスパッチを使って異なるテクニックをスケジュールすることができます。各コンピュートユニットは、異なる技術に対応するコードを呼び出すだけでよいのです。しかし、今回のケースはより複雑です。Separableでは、水平方向と垂直方向のパスでテクスチャを完全に統合する必要があります。このため、最初のパスの後、いくつかの領域をそのままにしておくことはできません(それらの領域はAFSIのために予約されているため)。そうでなければ、2つのアクセラレーションテクニックの間に境界がなくなってしまいます。さらに、AFISは2パスが必要です。1パス目はサンプリングのためで、2パス目は少なくともコピーが必要です。まず、AFISの結果をSeparable Filterの1パス目の近似値として使用し、これらの問題を処理する。2パスは避けられないので、AFISのための操作の一部を2パス目にシフトすることで、潜在的な帯域幅を減らすことができます。そして、図5.9に示すように、P1~P4の順番で4つのパスを実行します。
  • Irradiance prefiltering passs. MCサンプリングの予算が限られているため、ミップマップチェーンを構築して拡散放射照度のプレフィルタリングを行い、各MCサンプリングがより多くのサンプル情報を拾えるようにしています。AFISではレンダリングを高速化するためにフィルタリングされたサンプリングが使用されるため、このパスは必然的に発生します。ミップマップを毎フレーム構築するのはコストがかかると思われます。しかし、NIVIDIA Quadro P4000では、1080pで5つのMIPレベル生成にかかる時間は最大0.17msであり、これは低いオーバーヘッドと言えます。異なる構成でかかるオーバーヘッドの詳細については、表7.1を参照してください。
  • P1: AFIS pass. このパスでは、テクニックIDがAFSIとマークされた画素に対して、AFISアルゴリズム2を呼び出します。まず、提案するリアルタイム適応型サンプリングアルゴリズムに基づき、サンプルの分散を目標ノイズレベルまで低減するために各画素で必要なサンプル数を推定します。提案する逆CDF近似関数を用いて、拡散放射照度テクスチャからのサンプリングをオンザフライで高速に生成することを可能にします。さらに分散を減らすために、プロファイル構成と拡散放射照度に基づいたMIPレベルの推定を行います。なお、リアルタイムアダプティブサンプリングの履歴更新は、潜在的な帯域幅の要求を懸念して、P4にシフトしています。
  • P2: Horizontal and P3: Vertical sampling pass. 分離可能なフィルタリングのためのシェーディングコードは、この2つのパスで水平方向、垂直方向の順次に呼び出されます。水平および垂直サンプリングパスでは、サブサーフェイスプロファイルに対して事前に積分された重み付きガウスカーネルが、最高のパフォーマンスを得るために拡散放射照度のサンプリングに使用されます。
  • P4: multi-functional pass. 多機能パスでは、AFISサンプリング結果を次のバッファにコピーします。フリーライドとして、現在のピクセルの履歴バッファを更新します。シーンは常に変化し、カメラも任意に動くので、履歴更新のために前フレームの現在のピクセルの履歴を得るために、速度テクスチャで再投影を行います。アダプティブサンプリングアルゴリズムは、ダイナミックライティングにより性能低下を起こす可能性があるため、具体的には、アルゴリズム4と5を実行し、より安定したアダプティブサンプリングを実現します。詳細は第 6 章を参照してください。
  • Combine pass. 最後に、図5.8のAFISテクニックのみのパス概要に示されているように、サーフェイスアルベドとして機能するベースカラーにバッファ2からの表面散乱拡散を変調させる。次に、その結果を、サブサーフェイスプロファイル設定に基づくスペキュラーと結合します。

 可分近似テクニックは、以前はDipoleモデルのみであったため、DipoleとBurleyのモデルの間のフィットを提供します。そのために、新旧のパラメータの関係を2次式で近似しました。フィッティングの過程は付録Aにあります。このフィッティングにより、透過率もBurleyのモデルを使用するようにバージョンアップすることができます。このようにして、2つのリアルタイムアクセラレーションテクニックすべてに、同時に対応することができます。ユーザーは、ゲームスレッドで異なる加速テクニックを切り替えることができます。

5.4 Summary

 本章では、オンライン評価に効率的な新規サンプリング近似関数を提案し、サンプル列の生成方法について紹介した。また,フォトリアリスティックな表面下散乱のための新しいアルゴリズムである適応的フィルタ済み重点サンプリング(AFIS)を提案した.この手法は、サンプル数を最小化するだけでなく、各サンプルのサンプリング効率を向上させることができます。
 アドバンストデザインでは、ディフューズと遠方散乱を分離しています。遠方散乱の分散を追跡することで、サンプル数推定に対する拡散分散の影響を取り除き、遠方散乱のサンプル数を1ピクセルあたり0とすることができます。最後に、品質と性能のバランスを取るために使用できる加速フレームワークを提案しました。