超雑訳 Moment Transparency

こんぺこー。Pocolです。
引き続き,OIT関連の資料を見てみます。
今日は…
[Sharpe 2018] Brian Sharpe, “Moment Transparency”, HPG 2018, No.8, pp.1-4, 2018
を読んでみようと思います。
いつもながら、誤字・誤訳があるかと思いますので,ご指摘頂ける場合は正しい翻訳例と共に指摘して頂けるとありがたいです。


※図は[Sharpe 2018]より引用

ABSTRACT

リアルタイムでordered-independent transparencyを実現する新しいソリューション、moment transparencyを紹介します。これは、透過率関数をキャプチャし再構成するためにモーメントを使用することにより、既存の近似透過率関数技術を拡張するものです。モーメントベースの透過関数は、標準的なハードウェアのブレンド演算を用いて解析的に処理できるため、効率的であり、従来の技術の限界を克服しています。

1 INTRODUCTION

透明度の処理は、最近のリアルタイム・ラスタライザーではどこにでも存在します。これを処理する一般的な方法は、アルファブレンディングを使用することで、フラグメントを前から後ろ(FTB)または後ろから前(BTF)のいずれかの順序で処理する必要があります。ソートはピクセル単位で行うのが理想的ですが、これには無限のメモリが必要になる可能性があります。ほとんどの場合、ソートはオブジェクト単位で処理されるため、視覚的あるいはテンポラルアーティファクトが発生する可能性があります。
 Moment transparencyは、モーメント(モーメントシャドウマッピング[Peters and Klein 2015]から採用)を使用して、ピクセルごとの近似透過率関数を構築することで、これらの問題に対処します。パフォーマンス上の理由から、4つのモーメントのバリエーションが使用され、透過率は、標準的なGPUブレンディングハードウェアで自然に動作する加法的な構築を可能にする対数形式(すなわち光学的深度)で表されます。
 結果として得られるアルゴリズムは効率的で、厳密な順序独立性を持ち、少量の固定メモリで動作し、Rasterizer ordered viewのような特殊なハードウェアを必要とせず、グランドトゥルースと同等の結果を得ることができます。

2 BACKGROUND AND RELATED WORK

まず、ビューアとの距離\(z_i\)、アルファ\(\alpha_i\)、色\(c_i\)によって、透明なピクセル\(F_i\)を定義します。次に、任意の深度\(z\)とビューアとの間の全透過率(すなわち可視性)を表す透過率関数\(T(z)\)を定義します。透過率関数を使用すると、順序に依存しない方法で、最終的なピクセルの色に対する多くのフラグメントの寄与を計算することができます。

\begin{eqnarray}
\sum_{i=1}^{n} c_i \alpha_i T(z_i) \tag{1}
\end{eqnarray}

 近似透過率関数法[Wyman 2016]は、一定量のメモリ内で透過率関数\(T(z)\)の近似形式を事前に計算し、ラスタライズ中にそれをクエリすることで、order-independent transparency(OIT)を実現します。
 現在の最先端の近似透過率関数法には,適用性を制限する多くの欠点があります。Adaptive transparency[Salviら2011]には専用のハードウェア (rasterizer ordered views) が必要で、テンポラルアーティファクトを持ちます [Salvi and Vaidyanathan 2014] 。Weighted Blend Order-Independent Transparency (WBOIT) [McGuire and Bavoil 2013] は、シーン全体の経験的近似を備えているため、ほぼ均質なデータに適しています。Hybrid transparency[Mauleら2013]のようなK-Buffer技術は、最も重要な情報が最前面の\(k\)層にあることを前提としていますが、必ずしもそうではなありません(例えば、粒子系)。およびFourier opacity map [Jansen and Bavoil 2010] は、三角基底関数に細かい精度[Salviら2011]がないため、薄いサーフェスで失敗します。
 Moment Shadow Mapping (MSM) [Peters and Klein 2015] は、4つのモーメントに基づく深度表現を使用して、フィルタされたシャドウを実現するシャドウイング手法です。その後の研究において、Petersらは6モーメント[Petersら2017]のサンプリング関数を導出し、よりコンパクトで効率的にサンプリングできる4モーメントを格納する方法を提供し [Peters 2017] 、モーメントを透過率の格納に使用する方法を示しています。ただし、構築は順序に依存します[Petersら2017]。
 Moment transparency(MT) は、WBOITによって提供された基礎の上に構築され、経験的に決定された透過率関数をMSMから適応された4モーメントバージョンに置き換えたものです。
 我々の研究と同時進行で、[Münstermann et al. 2018]は最近、モーメントを使用してピクセルごとの透過率関数を近似し、順序に依存しない透過率を実現する、Moment-based order-independent transparency(MBOIT)を導入しました。4、6、および8個のパワーモーメントと2、3、および4個の三角モーメントに基づく導出が提示され、それぞれ品質とコストの程度が増加しています。MBOITは、低精度バッファを使用することにより、性能の向上とメモリの削減が可能であることを示していますが、その代償として、ラスタライザに互換性のあるハードウェアが必要となり、シーンに依存するバイアスが発生する可能性があります。MBOITはまた、ボリューメトリックシャドウについても探求しています。
 我々は,MTとWBOIT、そしてグラウンドトゥルースのリファレンスを比較します。

3 ALGORITHM OVERVIEW

Moment transparency(MT) を定義するために、まず透過率問題をモーメントとOIT (Section 3.1) に適合するものにします。次に、新しいモーメントベースの透過率関数をWBOITに統合し、OITを実現します (Section 3.2)。最後に、任意の深度\(z\)を精度のために必要な単位範囲にワープする方法を示します (Section 3.3)。

3.1 Moments for Order-Independent Transmittance

透過率問題をモーメントとOITに適応させる前に、MSMにおけるシャドーイングにモーメントがどのように使われているかを簡単に概説します。
 MSMは、シャドウマップ内の各ピクセルに対して、1つの深度\(z \in [0, 1]\)に対応する4つのモーメント\((z, z^2, z^3, z^4)^{\top}\)を格納します。対応する重み\(w\)を持つこれらのピクセルの集合に対するフィルタリングされたサンプルは、以下のように定義されます。

\begin{eqnarray}
b = \sum_{i=1}^{n} (z_i, {z_i}^2, {z_i}^3, {z_i}^4)^{\top} \cdot w_i \tag{2}
\end{eqnarray}

\(b\)からMSM Hamburger関数を使用して、与えられた入力深度\(z\)よりもライトに近い深度サンプルのおおよその割合を計算し、フィルタリングされた影を実現します。Hamburgerは、セルフシャドウのアーティファクトを最小限に抑えるために、分布の下界を与えるように定式化されています。
 モーメントとOITでの使用に透過率を適応させるために、アルファ合成を加算プロセスとして扱うことができる対数空間に移動します。ボリュームレンダリングの項を使用すると簡単になります。アルファ\(\alpha \in [0, 1)\)を持つフラグメントを光学深度\(d\)を持つ体積と解釈することができます。

\begin{eqnarray}
d = – {\rm log}(1 – \alpha) \tag{3}
\end{eqnarray}

光学的深度は加算的であり、複数のフラグメントの合成は合計となります。

\begin{eqnarray}
d’ = \sum_{i=1}^{n} d_i \tag{4}
\end{eqnarray}

光学的深度\(d_i\)を重み\(w_i\)として用いると、式2と3を用いて、任意の数の透明フラグメントからモーメントサンプル\(b\)を構成することができます。式4からの総光学深度\(d’\)が正規化に必要なわけではないので、\(b\)と\(d’\)(すなわち、合計で5つのfloat)から構成される透過率関数の圧縮表現を、次数に依存しない方法で構成することができます。
 Hamburgerを使用し、式3を反転させることで、任意の入力深度\(z\)に対するモーメントベースの透過率関数を評価することができます。

\begin{eqnarray}
T(z) = {\rm exp}(-{\rm Hamburger}(\frac{b}{d’}, z) \cdot d’) \tag{5}
\end{eqnarray}

この再構築の結果は図2で見ることができます。2つのサンプルの場合、再構成は厳密ですが、それ以上では近似になることに注意してください。

※図は[Sharpe 2018]より引用

3.2 Moment Transparency

WBOITを拡張するために、経験的に定義された\(T(z)\)を式5で定義されたモーメントベースのバージョンに置き換え、新しいアルゴリズムをMoment Transparencyと呼びます。このアルゴリズムには以下のレンダリングステージがあります:

(1) プライマリフレームバッファへ不透明サーフェイスを描画する
 ● 深度書き込み有効
(2) オフスクリーンバッファへと透明サーフェイスを描画し,モーメントと光学深度のみをキャプチャリングする
 ● プライマリフレームでの深度テクスチャを共有(深度テスト有効,深度書き込み無効)
 ● 式2と3をモーメントをキャプチャーするために使用する
 ● 合計光学深度をキャプチャーするために式4を使用する
(3) 二つ目のオフスクリーンフレームバッファへと透明サーフェイスを描画する
 ● プライマリフレームバッファとの深度テクスチャを共有する(深度テスト有効,深度書き込み無効)
 ● 合成の為に式1を使用する
 ● 式5は、ステージ2で作成されたデータを入力としながら、\(T(z)\)に使用されます。
 ● 並列にカバレッジを累積します
(4) 正規化の実行中に (ステージ3からの累積カバレッジに基づいて) 、2番目のオフスクリーントランスペアレンシーバッファーをプライマリバッファーに合成します。

 ステージ1と4はWBOITと変わらないので、ここではステージ2と3についてのみ説明します。
 ステージ2を処理するために、レンダリング解像度で、モーメント用のFP32_RGBAフレームバッファと、総光学深度用のFP32_Rフレームバッファを割り当てます。両方ともゼロに初期化し、ブレンドモードを加算に設定する必要があります。ステージ2は、すべての透明なジオメトリをスクリーンにラスタライズすることによって実行され、式2と3を使用してモーメントをキャプチャし、式4を使って総光学深度をキャプチャします。
 ステージ3では、標準的なWBOIT重み関数\(w(z,\alpha)\)を、式5で定義されるように、我々のモーメントベースのバージョンに置き換えます。
 

3.3 Converting Z to Unit Depth

セクション3.1で述べたように、我々は深度範囲を\(z\)とすることを要求しています。これは、特に式2を用いてモーメントを累積するときの精度の問題を解決するためです。任意の深度 \(z\) を単位範囲に変換するために、ニア平面 \(Z_{near}\) とファー平面 \(Z_{far}\) が与えられると、すべてのスケールで等しい相対精度を与えるのに役立つ対数ワープを使用します。

\begin{eqnarray}
z’ = \frac{ {\rm log}(z/Z_{near})}{ {\rm log}(Z_{far}/ Z_{near})} \tag{6}
\end{eqnarray}

4 IMPROVEMENTS AND DISCUSSION

ここでは、モーメント透過性のオプションの改善について概説し、結果と議論で締めます。

4.1 Low Resolution Moments

セクション3.1で示したように、モーメントはフィルタリングすることができます。これにより、モーメントバッファ(つまり透過率関数)の解像度と画像の解像度を切り離すことができます。低解像度でモーメントを構築することで、パフォーマンスが向上し、メモリが削減されます。Moment transparencyには以下の変更が必要です:

● モーメントおよび総光深度バッファに対して解像度を削減する。
● ステージ1の後のプライマリフレームバッファの深度テクスチャのダウンサンプル (フィルタにmaxを使用)し,ステージ2で使用します。
● \(T(z)\) でのテクスチャサンプリングの実装が、低解像度のモーメントバッファを考慮するように変更されました (ステージ3) 。

我々の実験では、レンダリング解像度を1/8に下げることで、メモリと効率と品質のトレードオフがうまくいくことがわかりました。
 この結果は図3aで見ることができます。薄いサーフェイスでは、草の葉が火に照らされて消えてしまったり、草全体のコントラストが失われるなど、大きな問題が発生する可能性があります。大きなサーフェイスは、火や煙、ガラス瓶にほとんど問題が見られず、うまく対処できる傾向があります。

4.2 Different Formats for Wire and Read

パフォーマンスを向上させるために、モーメントのキャプチャ(つまり書き込み)には、モーメントの再構築(つまり読み込み)とは異なるフォーマットを使用することが可能です。
 モーメント分解能がレンダリング分解能と同じであれば、非線形量子化モーメント (NLQM) [Peters 2017] を再構成に使用でき、算術命令と帯域幅の両方を節約できます。これは、ステージ2で生成されたモーメントデータをステージ3で消費される前にNLQMに変換することによって、モーメント透過性に統合できます。NLQMは32ビットから16ビットに圧縮しますが、品質の低下は見られません。
 NLQMはフィルタリングできないため、モーメントの解像度が低い場合は互換性がありません。この場合の代替手段は、標準の16ビットモーメント表現に変換することです [Peters and Klein 2015] 。帯域幅を削減することで、パフォーマンスがわずかに向上します。
 実装の詳細は、補足資料に記載されています。

4.3 Overestimation

図2からわかるように、フラグメントの数が増えるにつれて、4つのモーメントの透過率関数の質は低下します。
 この問題は,透過率関数を([Peters et al.2017]で説明されているより最適な形式ではなく)光学深度として表現することに起因しており,最終的なピクセルへの寄与が少ないにもかかわらず,リストの後方にあるフラグメントと前方にあるフラグメントに同等の重要性を与えます。その結果、圧縮率が低下します。
 過大評価[Peters et al. 2017]は助けになりますが、前景レイヤーのオーバーシャドウイングになることもあり、最良の外観を得るために微調整が必要なこともあります。図1bと3aでは25%の過大推定を使用しました。

4.4 Two Moments Passes

圧縮を改善するもう一つの方法は、2つのモーメントパスを使うことです。これを行うには、2つ目のモーメントセットを作成し(基本的にステージ2を繰り返す)、1つ目のモーメントセットをこのオクルージョンの推定値として使用します。これは、各フラグメントが本来あるべき量の2倍オクルードされるというバイアスを加えます。実際には、このバイアスはモーメント再構成の詳細さの損失によって相殺され、オクルージョンが不足する傾向があることがわかります。
 追加のラスタライズパスは、フル解像度の場合は高くつきますが、低解像度のモーメントを使用する場合は許容できるコストになります。
 この2回目のモーメントパスの結果は、図1cと2に見ることができます。一般的に、結果は良好で、前景のオブジェクトがより鮮明に見え、ボリューメトリック効果が向上しています。しかし、場合によっては、過大推定ほど良い結果にはなりません(図3b)。
 実装の詳細は補足資料を参照してください。

※図は[Sharpe 2018]より引用

4.5 Performance and Memory

次に、説明した技術のメモリと性能の測定基準について概説します。メモリの単位はバイト/ピクセルです。性能は、図1と3aの燃える家のシーンと、図3bの草と煙のシーンのレンダリングにかかった時間(ミリ秒)です。時間はNVIDIA GeForce GTX 1070で測定しました。

 Moment transparency(MT) と非線形量子化モーメントを用いたMoment transparency (MT_NLQM) は、非常によく似た時間を持っています。これはおそらく、これらのシーンのモーメント再構築コスト(および帯域幅)が、アセットの一般的なシェーダコストによって隠されていることを示しています。2つのモーメントパス(TMP)はフル解像度では遅いですが、MTとTMPの2つの低解像度のバリエーションは、非常に良いパフォーマンスとメモリコストを与え、関連するアーティファクトを許容できるのであれば、良いオプションであることを示しています。
 

4.6 Visual Analysis

図1に見られるように、MTはWBOITより改善されていますが、前景の草の葉とボトルのラベルは必要以上にわずかに透けて見え、火の玉はまだグラウンドトゥルース(GT)と異なっています。2回のモーメントパス(図1c)ではさらに改善され、前景の草の葉とボトルのラベルは不透明に見え、火の玉はよりGTに近く見えます。
 図3bの草と煙のシーンでは、カメラは濃い煙のパーティクルシステムの中に置かれ、半透明の草の方を見ています。これは説明したすべてのテクニックにとって難しいケースであり、満足のいく結果は得られませんでした。

5 CONCLUSION AND FUTURE WORK

我々は、近似的なOITを達成するために、4つのモーメントに基づいて透過率関数を構築するMoment transparency(MT)を導入しました。透過率は光学深度を用いて表現されるため、加法的な構成が可能です。モーメントベースの透過率関数は、標準的なハードウェアのブレンド演算を使用して解析的に処理できるため、効率的であり、従来の技術の限界を克服しています。
 品質、パフォーマンス、ロバスト性の間でトレードオフの関係にあるいくつかの改善策が示されました。
 将来的には、パフォーマンスと精度を向上させる予定です。1つのアイデアは、書き込みと読み出しに異なるフォーマットを使用することをさらに探求することであり、もう1つはadaptive overestimation[Peter et al. 2017]を使用することです。

ACKNOWLEDGEMENTS

オーサリングプロセス全体を通して助けてくれたMarc Droskeに感謝します。また、Alan Chambers, Alex Best, Andrea Weidlich、Andrew Sidwell, Andy Styles, Deanna Louie, Joe Letteri, Johannes Meng, Jon Hertzing, Lauchlan Robertson, Luca Fascione, Paolo Selva, Peter McGrattan, Robert Cannell, Sam Tack、そしてWeta Digitalの他のすべての人々にも感謝します。

REFERENCES