超雑訳 Alpha Distribution for Alpha Testing

こんにちわ,Pocolです。
今日は,
[Yuksel 2018] Cem Yuksel, “Alpha Distribution for Alpha Testing”, I3D 2018.
を読んでみようと思います。
いつものように誤字・誤訳があるかと思いますので,ご指摘頂ける場合は正しい翻訳例と共に指摘して頂けると有難いです。

※図は,[Yuksel 2018]より引用

ABSTRACT

アルファテストは、透明度を持つサーフェイスのレンダリングに広く使用されています。透明度がバイナリ関数の場合はうまくいきますが、半透明な領域は完全に透明か不透明に分類されるため、問題が発生します。残念ながら、半透明なテクスチャ領域は、しばしばミップマップレベルが粗くなり、距離とともにサーフェイスが消えてしまう原因となります。我々は、レンダリング時の操作に何の変更も加えることなく、アルファテストが半透明の期待される結果をもたらすように、テクスチャのアルファ値を前処理するためのアルファ分布アプローチを紹介します。我々は、類似の定性的な動作を持つアルファ分布のための2つの別々のアルゴリズムについて説明します。その結果、アルファ分布は低ノイズで高品質の結果を生成できることが分かった。また,アルファ分布がalpha-to-coverageによる高品質なレンダリングのための拡張方法についても説明します。

1 INTRODUCTION

アルファテストは、2値化された透過関数を簡単に扱うことができる方法です。レンダリング中、ユーザーが指定した閾値 \(\alpha_{\tau}\) 未満のアルファ値を持つフラグメントは破棄され (すなわち、完全に透明とみなされる)、その他のフラグメントは完全に不透明とみなされます。これは、バイナリ可視性を処理するためのシンプルで効率的なメカニズムを提供します。したがって、アルファテストは、フェンス、髪や草の葉、葉、およびローポリ表現のさまざまな形態の植生のようなオブジェクトのレンダリングに広く使用されています。そのため、このようなオブジェクトの詳細な形状のモデリングに必要な幾何学的な複雑さを回避することができます。
 一方、アルファテストは半透明なサーフェイスを扱うことを想定していません。しかし、ミップマッピングと組み合わせると、元のテクスチャが2値透過関数を持っていても、粗いレベルにおいてフィルタリングされたアルファ値が半透明な領域を形成することが多いです。ミップマップの粗いレベルのアルファ値がまとめて閾値\(\alpha_{\tau}\)の片側に寄ってしまい、ある距離を超えるとジオメトリが消えてしまうというよくある問題が発生することが多くなります。残念ながら、ミップマップレベルごとに \(\alpha_{\tau}\) を調整するという一般的な簡単な修正では、距離によるジオメトリの消失を常に防ぐことはできません [Castaño 2010]。
 最近、WymanとMcGuire [2017a; 2017b]は、安定したハッシュ関数で確率的なアルファ閾値を使用することによって、アルファテストの問題を巧妙に解決するハッシュドアルファテストを導入しました。確かに効果的ではありますが、このアプローチは最終的な画像にかなりの量のノイズをもたらすことになります。さらに,フラグメントごとのハッシュ値は効率的に計算できるものの,フラグメントシェーダにかなりの量の追加的な複雑さを導入してしまいます。
 本論文では、従来のアルファテストの問題点を解決し、半透明なサーフェイスを扱えるように拡張した、極めてシンプルなアプローチであるアルファ分布を紹介します。アルファ分布は、望ましいテクセルのサブセットがアルファテストに合格するように、すべてのミップマップレベルを含む与えられたテクスチャのアルファ値を変更するプリプロセスとして機能します。レンダリング時の処理は従来のアルファテストと同じなので、フラグメントシェーダのコードを変更する必要はありません。アルファ分布のための2つの異なるアルゴリズムについて説明します。どちらも、オリジナルのテクスチャの詳細を保持しようとしながら、低ノイズで半透明のサーフェイスを扱うことができます。その結果、従来のアルファテスト手法と比較して、アルファ分布がレンダリング品質の向上につながることがわかりました(図1)。また、アルファ値をサブピクセルのMSAAカバレッジサンプルに変換し、アンチエイリアスや半透明を含む高品質なレンダリングを実現するalpha-to-coverageを扱うために、アルファ分布をどのように拡張できるかを説明します。

2 RELATED WORK

アルファテストは広く使われており、距離によるジオメトリの消失の問題はよく知られていますが、コンピュータグラフィックスの研究コミュニティでは限られた範囲でしか注目されていませんでした。残念ながら、消失問題に対する単純な解法は、さまざまな理由から好ましくありません。Castaño [Castaño 2010] は,最高解像度レベルと同じ割合のテクセルがアルファテストに合格するような,ミップマップレベルごとの望ましいアルファ閾値を最初に見つけることによって,アルファ値をスケーリングすることを提案しています。この単純な修正はいくつかのケースでは役に立ちますが,常に結果が改善されるわけではありません。別の解決策は、ミップマップフィルタリングを無効にすることです。これは、カラーチャンネルのミップマップフィルタリングをしないか、アルファ値のためのセカンダリテクスチャフェッチのいずれかを意味します。また、これらの解決策はどちらも半透明を扱うことはできません。しかし、Screen-door transparency [Mulder et al. 1009] は、ピクセルのサブセットの可視性をマスクすることによって、半透明のオブジェクトを処理することができます。アルファ分布を用いた我々のアルファテストソリューションは、Scereen-door transparencyと密接に関連していますが、我々はスクリーン空間のサンプリングパターンを考慮しません。
 Hashsed alpha testing [Wyman and McGuire 2017a,b] は、最近導入されたエレガントなソリューションです。これは、フラグメントごとに確率的な閾値\(\alpha_{\tau} \in (0, 1]\)を選ぶことで、消失問題を排除します。これは、確率的な透明性を提供するものです [Enderton et al. 2010] 一方、最終的な画像にかなりの量のノイズを導入し、フラグメントシェーダにかなりの量の追加的な複雑さをもたらします。
 透明度を正確に扱うには、順序付けされたアルファ合成が必要です [Porter and Duff 1984]。これは、デプスピーリング[Everitt 2001]や、順序に依存しない透明度[Wyman 2016]などの最近の方法を用いて達成することができます。しかし,これらの手法の計算コストは,それらを実際には望ましくないものにしています。

3 ALPHA DISTRIBUTION

アルファ分布は、テクスチャのアルファチャンネルとそのミップマップレベルで動作します。目標は、レンダリング時にテクセルの望ましいサブセットがアルファテストに合格するように、アルファ値を調整することです。
 レンダリング時の計算は従来のアルファテストと同じなので、アルファ分布は性能やシェーダーの複雑さに影響を与えません。しかし、アルファ分布の品質は、アルファ値がどのように事前計算されるかに依存します。以下では、アルファ分布のための 2 つの単純なアルゴリズムについて説明します。このセクションで説明したもの以外のアルファ分布の代替方法を想像することは確かに可能です。

3.1 Error Diffusion

私たちの実感としては、アルファ値から2値の可視性関数を生成する問題は、ハーフトーン処理に非常によく似ています。したがって、アルファ値を変更する1つの簡単な方法は、ディザリング用に設計された誤差拡散アプローチに従うことです。我々のテストでは、Floyd と Steinberg [1976]の伝統的な誤差拡散技術を使用しますが、より最近の代替技術[Ostromoukhov 2001; Zhou と Fang 2003]もこのタスクに使用することが可能です。
 アルファ分布の誤差拡散は、ハーフトーン処理と同様に、スキャンライン順に位置\((x,y)\)の各テクセル\(i\)を順次訪れ、そのアルファ値\(\alpha_i\)を閾値\(\alpha_{\tau}\)と比較して量子化したアルファ値\({\hat \alpha}_i \in \{0, 1\}\)を計算します。量子化誤差\(\epsilon_i = \alpha_i – {\hat \alpha}_i\)は、まだ訪れていない近隣のテクセルに分配されます。Floyd と Steinberg [1976]のパターンを用いて、量子化誤差\(\epsilon_i\)の7/16、3/16、5/16、1/16の部分をそれぞれ\((x+1, y)\)、\((x-1, y+1)\)、\((x, y+1)\)、\((x+1, y+1)\)で隣接するテクセルにアルファ値として加算しています。まず、すべてのミップマップレベルを生成し、次に、誤差拡散を利用してオリジナルテクスチャの各ミップマップレベルを独立に修正します。
 誤差拡散は、量子化誤差を分散させることで、テクスチャの大きな部分がまとめて\(\alpha_{\tau}\)の片方に落ちることを防ぎます。修正されたアルファ値は、バイナリ可視性を持つオリジナルのアルファ値の外観に近似したディザリングパターンを生成します。その結果、消失問題を解決し、ディザリングを用いて半透明な領域を表現することが可能になります。

3.2 Alpha Pyramid

誤差拡散はうまく機能しますが、ディザリングパターンが生成されるため、好ましくない場合があります。そこで、アルファピラミッドと呼ばれるアルファ分布の代替方法を紹介します。
 アルファピラミッド法の目的は、各ミップマップレベルのアルファテストに合格すべき可視テクセル数を決定し、これを達成するためにアルファ値を修正することです。誤差拡散と同様に、各ミップマップレベルを完全に独立して処理します。それでも、アルファピラミッドアルゴリズムの性質上、特にテクスチャ解像度が2の累乗の場合、結果として得られるミップマップレベルはある程度の相関性を保持します。
 与えられた入力画像(すなわち、オリジナルのテクスチャまたはミップマップレベル)から、アルファピラミッド法は、平均アルファ値\({\bar \alpha}\)を計算することから始まります。アルファテストに合格するための可視テクセル数\(n\)は次式で決定されます。

\begin{eqnarray}
n = \left[ \frac{{\bar \alpha}N}{2\alpha_{\tau}} \right] \tag{1}
\end{eqnarray}

ここで、\(N\)は全テクセル数です。なお、\(\alpha_{\tau}\)のとき、\(n\)個のテクセルがアルファテストに合格した結果のサーフェイスの平均の不透明度は\({\bar \alpha}\)に相当します。このように、アルファピラミッド法は\(\alpha_{\tau} = 1/2\)を対象として設計されています。別の閾値を用いる場合は、前処理としてアルファ値を単純にスケーリングし、\(\alpha_{\tau} = 1/2\)を維持することが好ましい場合があります。
どのテクセルがアルファテストを通過すべきかを決定するために、まず、図5に示すように、ミップマップレベルと同様に、入力画像の解像度を順次低くしたピラミッドを構築します。入力画像の解像度が2のべき乗である場合、ピラミッドの構築はミップマップと同じです。しかし、ピラミッドレベルの解像度が2で割り切れない場合、境界付近のテクセルが最も近い\(2 \times 2\)テクセル領域でグループ化されます。したがって、ミップマップとは異なり、ピラミッドレベルの各テクセルが、その下のレベルの4、6、または9のユニークなテクセルに対応します。各ピラミッドレベルの各テクセルが、入力画像の異なる領域に対応します。ピラミッドレベル\(\ell\)の各テクセル\(i\)には、それが表す入力画像のテクセルに対するアルファ値の総和である\(\alpha^{\ell}_i\)が格納されます。この表記では \(\alpha^0_i = \alpha_i\)です。

※図は,[Yuksel 2018]より引用

 そして、ピラミッドの頂点から順に、各レベル\({\ell} \geq 1\)の各テクセルに整数の可視性の値を割り当てります。ピラミッドレベル\(\ell\)のテクセルの可視性の値は、その対応する入力画像のテクセルをいくつ可視化すべきかを決定します。したがって、\(n\)はテクスチャ全体の可視性の値となります。まず、最も高いピラミッドレベル\(L\)のテクセルに、そのアルファ値に基づいて\(n\)を分配します。各テクセル\(i\)は、その初期可視性の値として最初に\({\tilde n}^L_i = \lfloor \alpha^L_i / 2 \alpha_{\tau} \rfloor\)が割り当てられます。残りの可視性の値(すなわち\(n – \sum_i {\tilde n}^L_i\))は、残りのアルファ値(つまり,\(\alpha^L_i – 2 \alpha_{\tau} {\tilde n}^L_i\))が最も大きいテクセルに分配されます。競合があれば、競合するテクセルからランダムに1つを選ぶことで解決されます。規則的なパターンを生成しないように、競合の処理にランダムな選択プロセスを採用することが重要であることに注意してください。同じプロセスを、レベル1までのすべてのピラミッド・レベルについて繰り返します。レベル\(\ell \gt 1\)の各テクセル\(i\)について、その可視性の値\(n^{\ell}_i\)をその下のレベル\(\ell-1\)の対応するテクセルに分配します。なお、\(\alpha_{\tau} \geq 1/2\)のとき、結果の\(n^{\ell}_i\)は、ピラミッドレベル\(\ell \geq 1\)のテクセル\(i\)が表す入力画像テクセルの数以下であることが保証されます。
 入力画像(ピラミッドレベル0)の最終的なアルファ値を計算するために、ピラミッドレベル1のテクセル\(i\)に対応する入力画像のテクセルを、そのアルファ値に基づいてソートします。アルファ値が最も大きい最初の\(n^1_i\)個のテクセルは、可視テクセルとしてマークされます。ここでも、並べ替えの際の競合を解消するために、ランダムセレクションが使われます。最後に、テクセルが可視であるとマークされているかどうかに基づいて、2値のアルファ値が割り当てられます。
 アルファピラミッド法は誤差拡散法と同様の結果を得ることができますが、ノイズがわずかに少なくなり、入力テクスチャの高周波の詳細がよりよく保存されるようになります。

4 ALPHA-TO-COVERAGE

GPU の alpha-to-coverage 機能は、フラグメントのアルファ値をサブピクセルのサンプルカバレッジパターンの固定セットに自動的に変換します。これにより、半透明オブジェクトのレンダリングが容易に行える仕組みになっています。問題は、アルファ値が近いフラグメントは同じカバレッジパターンに対応し、同じカバレッジパターンを持つピクセル上の2つのフラグメントは互いに完全に隠れるため、2つのフラグメントのうち1つが効果的に破棄されることです。残念ながら、このケースはアルファテストやミップマッピングで使用される様々なモデルで典型的なものであり、結果としてalpha-to-coverageでかなりの可視性が損なわれてしまいます。
 ハッシュドアルファテスト[Wyman and McGuire 2017a,b]は、その確率的アルファ閾値をサブピクセルカバレッジサンプルに拡張することによってこの問題を解決します。ピクセルごとに複数のカバレッジサンプルを使用すると、ハッシュドアルファテストによって生成される可視ノイズも減少しますが、さらにシェーダが複雑になります。
 アルファ分布でalpha-to-coverageを使用する場合、まず量子化レベルを調整する必要があります。アルファ値を変更する場合、単一の閾値\(\alpha_{\tau}\)を使用するのではなく、サブピクセルカバレッジサンプルが提供する数だけ量子化レベルを単純に使用します。この場合、アルファ分布は、テクスチャの大部分は、異なる量子化レベル間の閾値よりわずかに下(または上)でないことを保証します。
 以下では、alpha-to-coverage を処理するための 2 つのソリューションを紹介します。これらは非常に似た結果をもたらしますが、性能とシェーダの複雑さの点で異なるトレードオフがあります。

4.1 Sample Mask Texture

最初の解決策は、サンプルマスクを保存するセカンダリーテクスチャを導入することです。このサンプルマスクのビットは、どのサブピクセルサンプルがカバーされていると考えるべきかを示しています。元のテクスチャと同じ解像度のサンプルマスクテクスチャを使用します。
 各テクセルについて、アルファ値に基づいて非ゼロのサンプルマスクビットの数を決定します。そして、非ゼロに設定されているビットをランダムに選択します。したがって、同じ数の非ゼロビットによるサンプルアルファ量子化では、異なるテクセルに対して異なるサンプルマスクが生成されます。その結果、2つのフラグメントのテクスチャが完全に一致しない限り、それらのカバレッジサンプルパターンの相関は回避され、半透明な面を見かけ上の可視性の低下なしにレンダリングすることができます。
 自明なのは、サンプルマスクテクスチャを導入すると、レンダリング中にセカンダリテクスチャを保存してサンプリングするための追加コストが発生します。カバレッジは完全にサンプルテクスチャによって決定されるため、オリジナルテクスチャのアルファチャンネルはもはや使用されません。しかし、サンプルマスクでバイリニアフィルタリングを使用できないので、サンプルマスクデータをオリジナルテクスチャのアルファチャンネルに格納することはできません(近傍フィルタでミップマップを使用します)。

4.2 Hashed Sample Mask

サンプルマスクテクスチャを計算する代わりに、フィルタリングされたアルファ値を使用してフラグメントシェーダ内でサンプルマスクを計算することも可能です。アルファ値は、サンプルマスクのビット数\(s\)を設定する必要があることを特定します。単純に最初の\(s\)ビットを設定し、wrap around でビットをランダムにシフトします。この操作は、ハッシュ化されたアルファテスト[Wyman and McGuire 2017a,b]で使用されるアルファからカバーする戦略に似ています。実際、安定した乱数の生成に同じハッシュ関数を使用することができます。しかし、ハッシュ化されたアルファテストとは異なり、\(s\)を決定するために確率的な決定を使用しないので、単一の乱数値のみが必要となります。
 フラグメントシェーダ内でサンプルマスクを計算した結果は、事前に計算されたサンプルマスクテクスチャを使用した場合と定性的に類似しています。主なトレードオフは、追加のテクスチャ・ルックアップを追加のシェーダの複雑さに置き換えることです。

5 RESULTS

私たちは、私たちのアルファ分布方法と、修正されていないテクスチャを用いた従来のアルファテスト、スケーリングされたアルファ値[Castaño 2010]、最近のハッシュ化されたアルファテスト方法[Wyman and McGuire 2017a、b]との様々な比較を提供します。本論文では、すべてのアルファテストの例で\(\alpha_{\tau} = 1/2\)を使用しています。すべての3Dモデルに対して、ハッシュ化されたアルファテストによる推奨異方性ハッシュ関数を使用しています。参照画像はデプスピーリング[Everitt 2001]によって生成され,すべての可視レイヤーを含むために必要な数のパスを使用します。明らかに,使用される方法に関係なく,アルファテストもalpha-to-coverageも,参照画像を完全に再現することは期待できませんが,それらは望ましい外観のためのグランド・トゥルース・リファレンスとして提供されます。
 図1は、半透明の葉を持つヤシの木です。予想通り、従来のアルファテストでは、葉の一部は完全に不透明で、他の部分は見えません。この挙動は、クローズアップしたビューでも同様に観察されます。アルファ値をスケーリングしても[Castaño 2010]、目に見える違いは得られません。ハッシュドアルファテスト[Wyman and McGuire 2017a, b]は,リファレンスの全体的な見え方を完全に再現しますが,葉の詳細が見えにくいような相当量のノイズにつながります。一方、アルファ分布は、ノイズが少なく、リファレンスに近いものが得られます。挿入図は、どちらのアルファ分布法でも葉の細部が忠実に再現されていることを示しており、間違いなくアルファピラミッド法は誤差拡散法よりもわずかに見かけ上のノイズが少なく、細部がよく保存されていることがわかります。
 また、半透明のテクスチャを用いた例を図2(上段)に示します。髪とひげの束は、テクスチャを持つサーフェイスの集合体としてモデル化されています。この場合、従来のアルファテストはクローズアップビューでは妥当な結果を出しますが、ファー ビューではヒゲが完全に消えてしまい、スケーリングされたアルファ値 [Castaño 2010] でかろうじて結果が改善されるだけです。ハッシュ化されたアルファテスト[Wyman and McGuire 2017a,b]と我々のアルファ分布法の両方が望ましい結果を生成します。ハッシュドアルファテストはこの例でもノイジーな結果をもたらしますが,髪と髭のテクスチャの性質上,それほど顕著ではありません。
図2の最下段には、alpha-to-coverageを用いた比較も掲載されている。ハードウェアでサポートされているalpha-to-coverageを使用した場合、アルファ値で決まる固定カバーパターンにより、重なり合う半透明な面同士が完全にオクルージョンし、従来のalpha-to-coverageとスケーリングされたアルファ値で透明な髭と髪になってしまいます。ハッシュドアルファテストは、alpha-to-coverageと相性がよく、アルファテスト版と比較して、ノイズを抑えた結果を得ることができます。私たちのアルファ分布の方法は、同様の品質の結果を生成します。

※図は,[Yuksel 2018]より引用

 図3は、透明度を2値化したテクスチャマップを持つ複雑なモデルを用いた比較です。従来のアルファテストによる遠景では、ジオメトリの消失が明らかです。一方,alpha-to-coverageは、比較的近いビューでもうまく機能しません。アルファ値のスケーリング [Castaño 2010] は、この場合にも役に立ちません。ハッシュドアルファテスト[Wyman and McGuire 2017a,b]と我々のアルファ分布法は、遠景のビューを含むアルファテストとalpha-to-coverageの両方でリファレンスと比較して同様の可視性を提供します。

※図は,[Yuksel 2018]より引用

 アルファテストの品質は透過関数に依存します。図4は、図1と同じモデルで、異なるアルファ値を持つテクスチャを使用したものです。アルファ値の大部分が閾値より(わずかに)低い場合、従来のアルファテストは単に機能しませんが、アルファ値の大部分が1に近い場合はうまく機能します。 ハッシュドアルファテスト[Wyman and McGuire 2017a,b]はどちらの場合でもノイジーな結果を生成します。我々のアルファ分布法は、どちらの場合でもうまく機能します。

※図は,[Yuksel 2018]より引用

 図6は、カメラに面した四角形のテクスチャを、異なる手法でレンダリングしたものです。すべての例で、遠景でより粗いミップマップレベルを使用する場合、従来のアルファテストは可視性を失うか、または過度の不透明度をもたらします。アルファ値のスケーリング [Castaño 2010] は、これらの例でほとんど、あるいはまったく違いを生じません。ハッシュ化されたアルファテスト[Wyman and McGuire 2017a,b]によるノイズは非常に明白です。私たちのアルファ分布法は、限られたノイズを導入し、期待される可視性を生成します。アルファピラミッド法は間違いなくエラー拡散よりも高周波の詳細をわずかに保存していることに注目してください。

※図は,[Yuksel 2018]より引用

 これらの結果はすべて、アルファ分布が従来のアルファテストの問題点を確かに解決していることを示しています。ハッシュ化されたアルファテスト[Wyman and McGuire 2017a,b]と比較して、アルファ分布はアルファテストで大幅に少ないノイズを生成しますが、アルファ対カバレッジの質的向上は明らかではありません。しかし、アルファテストとalpha-to-coverageの両方において、アルファ分布はよりシンプルなフラグメントシェーダをもたらします。
 

6 LIMITATIONS

アルファ分布の自明な制限として、閾値\(\alpha_{\tau}\)を変更した場合、アルファ値を再計算する必要があることが挙げられます。
 また、アルファ値を事前に計算するため、テクスチャをタイル状にした場合、各タイルで同じ可視化パターンが繰り返されます。ハッシュ化されたアルファテスト[Wyman and McGuire 2017a,b]では、ハッシュ値はフラグメントごとに計算されるため、このようなことは起こりません。
 アルファ分布の重大な欠点は、図7に示すように、拡大フィルタリングを用いるような極端なクローズアップではうまく機能しないことです。アルファ値の量子化のため、テクセルサイズの階段状のアーティファクトがすべてのエッジ付近に現れています。一方、修正前のアルファ値を用いた従来のアルファテストでは、元のアルファ値のバイリニア補間を用いて、比較的滑らかなエッジを生成することができます。したがって、元のテクスチャに半透明な領域がない場合は、レベル0の元のアルファ値を維持するだけで、この問題を回避することができます。この場合、ハッシュ化されたアルファテスト[Wyman and McGuire 2017a, b]は、過剰なノイズの形で別の種類の望ましくない結果につながるので、クローズアップでフェードアウトさせる必要があります。

※図は,[Yuksel 2018]より引用

 アルファ分布のもうひとつの欠点は、特殊なケースにおいて、事前に計算されたアルファパターンが通常のピクセルサンプルと整合し、図8に示すようなある種のモアレパターンを引き起こすことがあることです。このパターンは誤差拡散でより明らかになりますが、アルファピラミッドでも同様に見ることができます。このアーティファクトは、特定の距離とビューアングルでのみ明らかになるため、無視することが可能です。このアーチファクトを除去するためには、規則的なサンプリングパターンを崩す必要があります。これは、テクスチャ座標をわずかにジッタリングすることで可能になります(ハッシュ関数を使用)。この方法では、若干のノイズが発生しますが、目に見えるパターンを除去することができます。この論文では、図8を除いて、どの例でもこの解決策を使用していません。

※図は,[Yuksel 2018]より引用

7 CONCLUSION

アルファテストによる視認性の問題を解決する簡単な仕組みとして、アルファ分布のアプローチを紹介し、半透明なサーフェイスにも拡張しました。本論文の一つの貢献は、ハーフトーン処理とアルファテストの類似性を認識したことです。そこで、ハーフトーン処理によく使われる誤差拡散[Floyd and Steinberg 1976]がアルファ分布にも適用できることを示しました。また、アルファ分布の代替アルゴリズムとして、アルファピラミッド法について説明しました。最後に,アルファ分布がどのようにalpha-to-coverageに適用できるかを論じました。
 将来的には、さまざまな誤差拡散技術を試し、アルファテストやalpha-to-coverageにおける結果を比較することも興味深い研究の一つです。
 アルファ分布の重要な利点は、アルファテストのためにフラグメントシェーダーコードを修正する必要がないことです。したがって、この論文では、性能テストは含まれていません。一方、アルファ分布で alpha-to-coverage をサポートするには、フラグメ ントシェーダに比較的小さな変更を加える必要があります。これらの変更の性能への影響は、これまで説明した 2 つのalpha-to-coverage 方式のどちらを使うか、および、他のレンダリングタスクを処理するための GPU リソースの使用率に大きく依存すると予想されます。

ACKNOWLEDGEMENTS

Chris Wymanには、我々の予備的な結果について洞察に満ちた議論とコメントをいただきました。また、Pete ShirleyとKonstantinShkurkoのコメントと、Morgan McGuireの図3の木モデルを含むグラフィックリポジトリに感謝します。この研究は、NSFグラント#1409129の一部によって支援されました。

REFERENCES

  • Ignacio Castaño. 2010. Computing Alpha Mipmaps. http://the-witness.net/news/2010/09/computing-alpha-mipmaps/.
  • Eric Enderton, Erik Sintorn, Peter Shirley, and David Luebke. 2010. Stochastic Transparency. In Proceedings of the 2010 ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. 157–164.
  • Cass Everitt. 2001. Interactive Order-Independent Transparency. while paper. NVIDIA.
  • Robert W. Floyd and Louis Steinberg. 1976. An Adaptive Algorithm for Spatial Greyscale. Proceedings of the Society for Information Display 17, 2 (1976), 75–77.
  • Jurriaan D. Mulder, Frans C. A. Groen, and Jarke J. van Wijk. 1998. Pixel Masks for Screen-door Transparency. In Proceedings of the Conference on Visualization ’98 (VIS ’98). IEEE Computer Society Press, Los Alamitos, CA, USA, 351–358.
  • Victor Ostromoukhov. 2001. A Simple and Efficient Error-diffusion Algorithm. In Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH ’01). ACM, New York, NY, USA, 567–572.
  • Thomas Porter and Tom Duff. 1984. Compositing Digital Images. SIGGRAPH Comput. Graph. 18, 3 (Jan. 1984), 253–259.
  • Chris Wyman. 2016. Exploring and Expanding the Continuum of OIT Algorithms. In Eurographics/ ACM SIGGRAPH Symposium on High Performance Graphics, Ulf Assarsson and Warren Hunt (Eds.).
  • Chris Wyman and Morgan McGuire. 2017a. Hashed Alpha Testing. In Proceedings of the 21st ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D ’17). ACM, New York, NY, USA, Article 7, 9 pages.
  • Chris Wyman and Morgan McGuire. 2017b. Improved Alpha Testing Using Hashed Sampling. IEEE Trans. on Visualization and Computer Graphics PP, 99 (2017), 1–12.
  • Bingfeng Zhou and Xifeng Fang. 2003. Improving Mid-tone Quality of Variablecoefficient Error Diffusion Using Threshold Modulation. ACM Trans. Graph. (Proceedings of SIGGRAPH’03) 22, 3 (July 2003), 437–444.