Skip to content
Go back

拙訳「A survey of real-time hard shadow mapping methods」

· Updated:

[Scherzer et al. 2011Scherzer, D., Wimmer, M. and Purgathofer, W. 2011. A survey of real-time hard shadow mapping methods. Computer Graphics Forum 30, 1, 169–186. 10.1111/j.1467-8659.2010.01841.x. https://www.cg.tuwien.ac.at/research/publications/2011/scherzer2011d/scherzer2011d-pdf.pdf.]

doi url

1. はじめに(Introduction)#

シャドウはシーンにおける光輸送の重要な結果である。これらはオブジェクト同士やオブジェクトと光源の幾何的な関係を明確にするための見た目の手がかりを与える。面光源area light sourcesによるソフトシャドウはゲームのようなアプリケーションにおいてますます人気になっている一方、多くのアプリケーションは依然として、ポイントライトやディレクショナルライトによってもたらされるハードシャドウを用いている。アプリケーションにおいていくつかの光源にソフトシャドウが用いられている場合でも、多くの光源はハードシャドウやフィルタリング技術を用いて若干ソフト化されたシャドウをもたらすポイントライトとして許容できる程度にモデル化することができる(太陽によってもたらされる影がこの例に当たる)。我々の調査では、最も広く使われているシャドウアルゴリズムであるので、ハードシャドウに注目したいが、これらのポテンシャルは、この問題に関する論文が大量に存在するが故に、特定のアプリケーションに対して最適なアルゴリズムを選ぶことが難しく、滅多にフル活用されることがない。

ある点が光源の視点から見えないとき、この点は影の中にある。この点に光線が到達するのを遮るオブジェクトはシャドウキャスターshadow casterオクルーダーoccluderブロッカーblockerなどと呼ばれる。影の中にある点を持つオブジェクトはシャドウレシーバーshadow receiverと呼ばれる(図1を参照)。リアルタイムハードシャドウにはジオメトリベースイメージベースの2つの主要なアプローチが存在する。

(図1:シャドウキャスティングの図解)

シャドウアルゴリズムはコンピューターグラフィクスそれ自体とほぼ同じくらい前から存在しているにも関わらず、堅牢で効率的なハードシャドウ生成は未だに未解決の問題である。ジオメトリベースのアルゴリズムはピクセルパーフェクトな結果を生み出す一方、異なるビュアーおよびライトの配置constellationsによる堅牢性の問題に悩まされる。これらの汎用性versatilityにより、ジオメトリベースのアルゴリズムにおけるほぼすべての研究はシャドウボリュームに注目している[Crow 1977Crow, F. C. 1977. Shadow algorithms for computer graphics. Proceedings of the 4th annual conference on computer graphics and interactive techniques 242–248. 10.1145/563858.563901.]。この技術の主なデメリットはすべてのシャドウボリュームをレンダリングするのに必要な大量のフィルレートである。加えて、輪郭検出を行わなければならず、ポリゴンが豊富polygon-richなシーンでは、これは別のパフォーマンスペナルティを意味する。最後に、エッジを検出して押し出すextrude単純な方法が必要とされるので、ポリゴンデータのみで処理できる。

その一方で、イメージベースのアルゴリズムは、これらの複雑さが標準のシーンレンダリングと同様であるため、非常に高速である。シャドウマッピング[Williams 1978Williams, L. 1978. Casting curved shadows on curved surfaces. Proceedings of the 5th annual conference on computer graphics and interactive techniques 270–274. 10.1145/800248.807402. https://cseweb.ucsd.edu/~ravir/6160-fall04/papers/p270-williams.pdf.]は任意のキャスターおよびレシーバーの配置を扱うことができ、セルフシャドウを計算に含めることができ、ポリゴンでない入力すら処理できるイメージベースのアルゴリズムである。基本のシャドウアルゴリズムは節2にて触れる。

残念ながら、シャドウマッピングもまたいくつもの欠点に悩まされる。第一に、オムニディレクショナルライトomni-directional lightsが単一の錐台を用いてキャプチャーできない。この問題は節2で議論される。

第二の、より厳しい問題はシャドウマップのサンプリングとシャドウマップに投影されたイメージピクセルのサンプリングが通常では一致しないために起こるエイリアシングアーティファクトである。節3では、このエイリアシングアーティファクトを解析し、この解析からいくつかの異なる種類の誤差を導きたい。一方節4では、サンプリング誤差を減らすことができる手法の概要を提供する。

第三の問題は、テクセルごとにシャドウマップに格納される深度情報におけるアンダーサンプリングおよび不正確さによって引き起こされる正しくないセルフシャドウである。これは堅牢な結果をもたらすために深度テストをバイアスする(深度バイアスdepth biasing)必要性を生み出す。我々は節5においてこの問題への様々なアプローチを議論する。

節6では第2パスにおいてシャドウマップ中に格納された情報をより良く再構築するためのサンプリング理論を適用するフィルタリング技術を紹介する。最後に、節7では与えられたアプリケーションに対して最適なアルゴリズムを選ぶ方法についてのガイドラインを提供する。

2. 基本(Basics)#

シャドウマッピングにおいて、シャドウ計算は2パスで行われる。まず、(ライト空間で)光源から見える現在のシーンの深度イメージ(シャドウマップ)がレンダリングされ、格納される(図2左を参照)。このイメージはテクセルごとに光源に最も近いオブジェクトの深度を含んでいる。この深度の背後にあるすべては光源から見えず、それ故に、影の中にある、という発想である。次のパスでは、そのシーンが(ビュー空間で)ビューポートからレンダリングされ、各3Dフラグメントがライト空間に再投影される。再投影されたフラグメントの深度がシャドウマップに格納された深度より遠くある(深度テスト)ならば、そのフラグメントは影の中にあり、そのようにシェーディングされる(図2右を参照)。

(図2:シャドウマッピング: まず、シーンの深度イメージ(シャドウマップ)が光源のビューポートからのレンダリングによって生成される(左)。次に、ビュー空間の各フラグメントの再投影された深度がシャドウマップに格納された深度と比較される(右)。)

オムニディレクショナルライトはその球状のビューにより複数のバッファを用いて計算されなければならない。単一の錐台ではこれを反映できず、多くのシャドウマップと錐台がこの球状のビューを分割するために構築されるなければならない。最も一般的なアプローチでは6つの錐台(キューブマップの面ごとに1つ)を用いるが、このようなライトに大きなパフォーマンスペナルティを引き起こす。より高速な解決法は放物線parabolicマッピング[Brabec et al. 2002Brabec, S., Annen, T. and Seidel, H.-P. 2002. Shadow mapping for hemispherical and omnidirectional light sources. Advances in modelling, animation and rendering 397–407.]を用いることで達成させることができる。これは結果として半球ごとに1つずつの計2つのレンダリングとなるだけでなく、グラフィクスハードフェアにおいて効率的に放物線マッピングを模倣する(線を曲線にする)方法の問題も生み出す。最も単純な解決法では、シーンが頂点だけの放物線マッピングとして事足りるように十分に細分されtessellated finelyていると仮定する。より低速で入り組んだアプローチとして、モダンなハードウェアで直接的に曲線を計算するものが存在する[Gascuel et al. 2008Gascuel, J.-D., Holzschuch, N., Fournier, G. and Péroche, B. 2008. Fast non-linear projections using graphics hardware. Proceedings of the 2008 symposium on interactive 3D graphics and games 107–114. 10.1145/1342250.1342267. https://hal.science/hal-00257806/file/i3d2008-gascuel.pdf.]

3. 誤差解析(Error Analysis)#

シャドウマップをレンダリングするとき、与えられたシーンの離散的サンプリング表現discretely sampling representationが生成される。シャドウマップ演算operationは光源に関する表面の可視性条件を再構築するためにこの表現を後々に用いる。故に、シャドウマッピングについてテクスチャーマッピングと似た信号の再構築処理として考えると便利である。信号の再構築は以下の手順に従う。

  1. 最初に、入力関数をサンプリングする。すなわち、レンダリングを用いてシャドウマップを生成する。最初のサンプリングフェーズではエイリアシングを回避するために行える帯域制限は存在しないので、サンプリング周波数は理想的にはその信号のナイキスト周波数より大きい必要がある。深度比較を計算した後の実際のシャドウ信号は鋭いエッジを持ち、それ故に、無制限の周波数を持つことに注意する。
  2. そのサンプリング表現から信号を再構築(または、補間)する。シャドウマッピングでは、これはフラグメントをシャドウマップ空間に投影して、シャドウマップテストを計算するときに発生する。深度テストの非線形性により、素直なシャドウマッピングに対して最近傍探索nearest-neighbor lookupのみが可能である。
  3. 対象とする出力解像度では高すぎる周波数を回避するために再構築された信号に帯域制限(または、事前フィルタリング)を行う。これは深度テストの非線形性によりシャドウマッピングに対して簡単にはstraightforwardlyできない。
  4. 再構築された信号を最終ピクセル位置でリサンプリングする。

離散的サンプリングのシナリオでは、再構築とリサンプリングが結合しているので、再構築は最終ピクセル位置でのみ発生することに注意する。

上記の手順による信号の再構築処理としてのシャドウマッピングを理解しやすくするfacilitate a mental modelために、シャドウマッピング演算を特定のオブジェクトがすでに焼き込まれたシャドウテストの結果を持つ投影テクスチャーマップprojective texture mapによるオブジェクトのテクスチャーリングとして考えることができる。これは、そのテクセルが光の中にあるフラグメントに対して1に、影の中にあるフラグメントに対して0に塗り潰されていることを意味する。この方法では、再構築とリサンプリングは、再構築が最近傍探索かバイリニア補間で行われる、帯域制限がミップマッピングを用いて行われる、リサンプリングが単なる最終ピクセル位置での関数の計算である、といったところで標準のシャドウマッピングと比較されることがある。

3.1. 誤差の種類(Types of Error)#

主な誤差の種類として以下が存在する。

  • アンダーサンプリングはスクリーンに投影されたシャドウマップのサンプルがスクリーンのピクセルより低いサンプリングレートを持つときに発生する。これは最初のサンプリング周波数が低すぎることに起因する。
  • オーバーサンプリングはスクリーンに投影されたシャドウマップのサンプルがスクリーンのピクセルより高いサンプリングレートを持つときに発生する。この場合、テクスチャーサンプリングで知られる古典的なエイリアシングが発生する。これは、最初のサンプリングレートを適応させるか、後に議論する帯域制限または事前フィルタリングを行うかのいずれかによって修正できる(節6を参照)。
  • 再構築誤差、または、階段状アーティファクトは最近傍再構築に起因する。これはより優れた再構築フィルターによって修正できる(節6を参照)。
  • 時間的temporalエイリアシング、または、ちらつきflickeringアーティファクトは、シャドウマップのラスタライゼーションがフレームごとに変化する場合に発生する。これらのアーティファクトは特にアンダーサンプリングが発生する場合に最適でない再構築が行われると現れるだろう。改善案に関しては節4.6を参照のこと。

信号処理、特にテクスチャーマッピングとの最も重要な差異はシャドウマッピング処理が最初のサンプリング手順に関するいくつかの制御権を得ていることである。最初のサンプリングを変更すると、すべての種類の誤差の効果を減少させるため、シャドウマッピングに関するほとんどの文献publicationsではこのアプローチを取っている。故に、節3.2節3.3では、より詳細なサンプリング誤差とこのエラーの種類を特徴付けるための2つの手法を議論したい。具体的にシャドウマッピングの文脈におけるオーバーサンプリングと再構築を扱うことを対象としたアプローチもいくつか存在するが、これは節6で説明したい。

3.2. 単純化されたサンプリング誤差解析(Simplified Sampling Error Analysis)#

シャドウマップのサンプリング誤差を減らすほとんどのアルゴリズムの根底にはシーンにおける誤差分布の解析がある。単純化された誤差解析はPerspective Shadow Mapsのために Stamminger and Drettakis [2002Stamminger, M. and Drettakis, G. 2002. Perspective shadow maps. Proceedings of the 29th annual conference on computer graphics and interactive techniques 557–562. 10.1145/566570.566616. https://www-sop.inria.fr/reves/Basilic/2002/SD02/PerspectiveShadowMaps.pdf.] によって初めて導入され、同じ式が多くの後続のアプローチに使われている。その解析は頭上にあるディレクショナルライトを仮定し、視錐台のZ軸上のどこかに位置する表面要素を調べる。図3は小さなエッジに対する構成を示している。

(図3:シャドウマッピングにおけるエイリアシング)

シャドウマップにおけるピクセルはそれを通過する光線のシャフトa shaft of light raysを表現し、シャドウマップの局所的パラメーター化local parametrizationにおける大きさds×dsds \times dsを持つ。我々はビュアーのニアおよびファー面の間を0から1とするシャドウマップの局所的パラメーター化を仮定する --- これは、シーンの見えない箇所でいずれの解像度も無駄にせず、シャドウマップが視錐台へ適切に注目していることをすでに仮定している(節4を参照)。ワールド空間では、光線のシャフトは例えばユニフォームシャドウマップに対して長さdz=(zfzn)dsdz = (z_f - z_n) dsを持つ。

そのシャフトはdz/cosβdz / \cos \betaの長さに沿って小さなエッジに当たる。これはアイeye空間ではdy=dzcosαcosβdy = dz \frac{\cos\alpha}{\cos\beta}の長さを表し、スクリーンでdp=dy/zdp = dy / zに投影される(ニア面の距離を1とする)。我々は小さなエッジがzz軸に沿って並行移動できる、すなわち、zzが解析の自由パラメーターであると仮定していることに注意する。そして、このシャドウマップのエイリアシング誤差dp/dsdp / dsは以下となる。

dpds=1zdzdscosαcosβ(1)\frac{dp}{ds} = \frac{1}{z} \frac{dz}{ds} \frac{\cos\alpha}{\cos\beta} \tag{1}

シャドウマップのアンダーサンプリングは、dpdpがピクセルのサイズより大きいとき、または、高さ1のニア面にあるビューポートに対して、dp/dsdp/dsresshadowmap/resscreenres_{shadowmap}/res_{screen}より大きいときに発生する。 Stamminger and Drettakis [2002Stamminger, M. and Drettakis, G. 2002. Perspective shadow maps. Proceedings of the 29th annual conference on computer graphics and interactive techniques 557–562. 10.1145/566570.566616. https://www-sop.inria.fr/reves/Basilic/2002/SD02/PerspectiveShadowMaps.pdf.] がすでに示したように、これは、dzzds\frac{dz}{zds}が大きいときの*遠近によるエイリアシングperspective aliasing* と、cosα/cosβ\cos\alpha / \cos\betaが大きいときの*投影によるエイリアシングprojection aliasing*、の2つの理由により発生し得る。

(図4:左図において、投影によるエイリアシングの原因は木の表面の向きである。これはシャドウマップでは小さな範囲に投影されるが、カメラ空間では大きな範囲に投影される。右図での遠近によるエイリアシングはシャドウマップが遠近による短縮perspective foreshorteningに無関係であるために発生し、それゆえに、(カメラに関して)遠くの範囲も近くの範囲も同じ解像度でか格納されるが、カメラ空間では非常に異なる大きさに投影される。)

投影によるエイリアシングは光の方向にほぼ並行な表面で発生する局所的な減少である(図4の左を参照)。この種の誤差を減らすには、そのような範囲でのサンプリング密度を高くする必要がある。シーン解析に基づいて局所的にサンプリング密度を適合させるアプローチでのみこれを達成できる(節4.3.3から節4.6)。

一方、遠近によるエイリアシングはビュアーの透視投影によって引き起こされる(図4の右を参照)。遠近による短縮効果がシャドウマップの軸のひとつに沿って発生する場合、シャドウマップのパラメーター化によって影響を受ける可能性がある。異なるパラメーター化が選ばれる場合、これはシャドウマップに沿って異なるサンプリング密度分布をもたらすだろう。標準の一様なパラメーター化は定数のdz/dsdz/dsを持ち、それゆえに、サンプリング誤差dp/dsdp/ds1/z1/zが大きくなると大きくなり、ニア面に近くなると発生するようになる。これは結果としてカメラ近くのオブジェクトに費やされるサンプル数が少なくなり、この誤差の効果を非常に目立たせてしまう(図5を比較参照)。遠近によるエイリアシングを減らすため、異なるパラメーター化を用いるか、シャドウマップを小分けにするかのいずれかによって、ビュアー近くにより多くのシャドウマップサンプルを分布させるアプローチがいくつか存在する(節4.2および節4.3)。

(図5:ワールド空間における一様な分布(左)では遠近による短縮によって観測者の近くで劣化する。この効果はポストパースペクティブ空間で確認することができる(右)。すぐ近くの要素に費やされるサンプルはほとんどない。)

3.3. 正確なサンプリング誤差解析(Accurate Sampling Error Analysis)#

サンプリング誤差の正確な解析は複雑であり、Brandon Lloydの論文articleおよび学位論文thesisにおいて研究される[Lloyd 2007Lloyd, D. B. 2007. Logarithmic Perspective Shadow Maps (Thesis). https://gamma-web.iacs.umd.edu/papers/documents/dissertations/lloyd07.pdf.; Lloyd et al. 2008Lloyd, D. B., Govindaraju, N. K., Quammen, C., Molnar, S. E. and Manocha, D. 2008. Logarithmic perspective shadow maps. ACM Trans. Graph. 27, 4. 10.1145/1409625.1409628. https://gamma.cs.unc.edu/LOGPSM/logpsm_tog08.pdf.]。ここでは結果だけを用意する。一般的な構成では、エイリアシング誤差mmは以下のようになる。

m=rjrtdGdtWlWenenldldecosϕlcosϕecosψecosψl(2)m = \frac{r_j}{r_t} \frac{dG}{dt} \frac{W_l}{W_e} \frac{n_e}{n_l} \frac{d_l}{d_e} \frac{\cos\phi_l}{\cos\phi_e} \frac{\cos\psi_e}{\cos\psi_l} \tag{2}

この数式において、

(図6:正確なエイリアシングの説明に用いられる表記法(画像はBrandon Lloydの厚意によるもの))

  • rjrt\frac{r_j}{r_t}はスクリーンとシャドウマップの解像度の比である
  • dGdt\frac{dG}{dt}はシャドウマップのパラメーター化の導関数である(上記ではdz/dsdz/dsと呼ばれる)
  • WlWe\frac{W_l}{W_e}はライトとアイのビューポートのワールド空間の大きさの比である
  • nenl\frac{n_e}{n_l}はアイとライトのニア面距離の比である
  • dlde\frac{d_l}{d_e}はライトとアイからのパッチ距離の比である(ded_eは上記のzzに対応する)
  • ϕl,ϕe\phi_l, \phi_eはイメージ面およびシャドウマップ面の法線からのライトおよびアイ光線の角度である
  • ψl,ψe\psi_l, \psi_eはパッチの面法線からのライトおよびアイ光線の間の角度である(上記でのα\alphaβ\betaに対応する)

単純化された解析と比較して、この数式は表面要素が視錐台の中心にないときのサンプリング誤差における、任意のライト位置または方向に対する変化を計算に入れている。ポイントライトについても正確に計算に入っている。ディレクショナルライトでは、nl/dln_l/d_lは1に収束し、cosϕl\cos\phi_lは定数となるだろう。シャドウマップのアンダーサンプリングはm>1m > 1のときに発生する。

考慮すべき重要な点はこれらの数式がひとつのシャドウマップ軸のみを扱うことである。しかし、透視変換を用いたzz軸の再パラメーター化は他のシャドウマップ軸に沿ったサンプリング誤差にも影響を与える。図5を見た場合、これはこの論文が印刷されている平面に直交する軸である。この軸に沿ったテクセルもまた再パラメーター化を通じて引き伸ばされ、同様にサンプリング誤差に影響を与える。我々は節4.2.2でこの効果を簡単に検討する。

4. サンプリング誤差を減らすための戦略(Strategies to Reduce the Sampling Error)#

一般に入力イメージの解像度が事前に定まっているテクスチャーマッピングと異なり、シャドウマッピングでは、元々のサンプリング手順への大きな制御権が存在する。それ故に、投影されるシャドウマップサンプルが素のシャドウマッピングより優れたスクリーン空間のサンプリングレートに対応するようにサンプリングを適合させることが可能である。

特に、拡大magnification シナリオにおいて、テクスチャーマッピングでは、負担のほとんどが再構築フィルターにかかっているのに対して、シャドウマッピングでは、この負担がサンプリングレートを増やすこと、すなわち、影響を受ける範囲から拡大(または、アンダーサンプリング)を取り除くことで減らすことができるので、最近傍再構築が時折良好な品質をもたらす可能性がある。さらに、縮小minification シナリオにおいて、例えばスクリーン上で小さく現れる範囲では、最初のサンプリングレートを減らすことができ、それによって、高価な帯域制限フィルターの必要性を回避する。

サンプリング誤差削減技術における文献が大量にあるので、我々はサンプリング誤差を取り除こうとするアプローチを、フォーカシングfocusing湾曲ベースwarping-based分割ベースpartitioning-based不規則サンプリングベースirregular sampling-based のアルゴリズムへさらに細分化する。

4.1. フォーカシング(Focusing)#

サンプリングレートを改善できる最も素直な方法のひとつは、見えないシーン部分でシャドウマップのスペースを無駄していないこと確かめることである。特に屋外のシーンでは、単一のシャドウマップがシーン全体に使われる場合、視錐台に対する当該部分はシャドウマップの一部分のみとなるだろう。故に、フィッティングまたはフォーカシングの技術は、 Brabec et al. [2002Brabec, S., Annen, T. and Seidel, H.-P. 2002. Practical shadow mapping. Journal of Graphics Tools 7, 4, 9–18. 10.1080/10867651.2002.10487567. https://doi.org/10.1080/10867651.2002.10487567.] によって初めて導入され、視錐台を取り囲むようにシャドウマップの錐台を一致させる。

幾何的な解法では、視錐台とライト位置(ディレクショナルライトではこの位置は無限遠にある)の凸包を計算して、その後、この物体bodyをシーンの境界ボリュームとライトの錐台でクリップする(詳細は[Wimmer et al. 2004Wimmer, M., Scherzer, D. and Purgathofer, W. 2004. Light space perspective shadow maps. Proceedings of the fifteenth eurographics conference on rendering techniques 143–151. https://diglib.eg.org/server/api/core/bitstreams/fc2f233d-529f-4261-a7e3-a74835553a29/content.; Wimmer and Scherzer 2006Wimmer, M. and Scherzer, D. 2006. Robust shadow mapping with light space perspective shadow maps. ShaderX4. https://www.cg.tuwien.ac.at/research/publications/2006/Wimmer-2006/.]を参照)。こんにちでは非常に大きな視錐台が一般的であり、定期的にシーン境界の外側へと拡張するため、シーンの境界ボリュームとのクリッピングは必須である。我々はその結果の物体を交差物体Bintersection body Bと呼ぶ(図7を参照)。

(図7:より良いシャドウマップフォーカシングは、ライト錐台LL、シーンの境界ボックスSS、視錐台VVを境界ボリュームBBと組み合わせることで利用可能なシャドウマップ解像度を活用する。ここでは、左にポイントライトのものを、右にディレクショナル光源のものを示す。)

交差物体は可視性アルゴリズムを用いることでさらに削減できる。シャドウマップが生成される前に、最初の深度のみのパスがCoherent Hierarchical Culling (CHC) [Mattausch et al. 2008Mattausch, O., Bittner, J. and Wimmer, M. 2008. CHC++: Coherent hierarchical culling revisited. Computer Graphics Forum 27, 2, 221–230. 10.1111/j.1467-8659.2008.01119.x. https://www.cg.tuwien.ac.at/research/publications/2008/mattausch-2008-CHC/mattausch-2008-CHC-draft.pdf.]のようなオンライン可視性アルゴリズムでレンダリングされる場合、ファー面の距離は最も遠い可視オブジェクトをカバーするように減らすことができる。

一般に、フィッティングは、シャドウマップのラスタライゼーションがフレームごとに変化するので、時間的エイリアシングを引き起こす。特に可視性情報が用いられるとき、強烈な時間的不連続性が発生するので、この場合では優れた再構築フィルターが非常に重要になる。

フィッティングによる時間的エイリアシングはワールド空間でテクセル境界を一定に保とうとすることでも幾分か減らすことができる。まず、シャドウマップはビュアーが回転しても投影されたシャドウマップテクセルが形状を変化させないようにするためにワールド空間で一定の向きを維持する必要がある。このため、シャドウマップは交差物体の軸並行な境界ボックスaxis-aligned bounding boxに焦点を合わせる必要がある。シャドウマップビューにおける視錐台の平行移動によるエイリアシングを回避するため、シャドウマップは1テクセルの境界付きで生成され、視錐台がテクセル全体を動かす場合にのみ改めるrefit必要がある。しかし、ビュアーの移動のほとんどはシャドウマップビューにおける視錐台のスケーリングも引き起こすため、多くのシャドウマップ空間を無駄にせずに制御することは更に難しい。この詳細は[Zhang et al. 2009Zhang, F., Zaprjagaev, A. and Bentham, A. 2009. Practical Cascaded Shadow Maps. ShaderX7. http://www.shaderx7.com/.]を参照のこと。

4.2. 湾曲(Warping)#

視錐台をシャドウマップに投影するとき、視点viewpoint近くでは高いサンプリング密度が必要となり、視点から遠くでは低いサンプリング密度が必要となることが明らかとなる。いくつかのケースでは、有益な形でサンプリング密度が大局的に変化するように、シャドウマップに投影する前にシーンへ単一の変換を適用することが可能である(図8を参照)。元のアルゴリズムにおいて、湾曲は単一のシャドウマップに適用されたが、後にサンプリングレートをさらに改善するために分割アルゴリズムと組み合わせられることとなった(節4.3節4.4を参照)。

(図8:視錐台VV、透視変換PPを定義する錐台を持つLight Space Perspective Shadow Mapsの構成の例。左: ディレクショナルライト、視錐台VV、透視変換PP。右: 湾曲した後、ビュアー近くのオブジェクトはシャドウマップ中でより大きく現れる。従って、より多くのサンプルを受け取る。)

Stamminger and Drettakis [2002Stamminger, M. and Drettakis, G. 2002. Perspective shadow maps. Proceedings of the 29th annual conference on computer graphics and interactive techniques 557–562. 10.1145/566570.566616. https://www-sop.inria.fr/reves/Basilic/2002/SD02/PerspectiveShadowMaps.pdf.]Perspective Shadow Maps (PSM)の論文でシャドウマップの湾曲を導入した。この主なアイデアは、シャドウマップへレンダリングする前にシーンへ透視変換、ビュアーの投影を適用することである。つまり、シャドウマップサンプルの分布が、投影の中心近くで多く、投影のファー面近くで少なくなるように変化させる。これは、4x4行列で表現できる、単純な透視変換しか使われないという利点を持つ。これはハードウェアに上手く対応し、高速に計算される。このアプローチの主な問題は、その誤差が取り得る深度の範囲全体へと不均等に分布するので、この手法の達成可能な品質がアイおよびビューのニア面に強く依存することである。近いニア面では、解像度のほとんどがアイ近くで使い切ってしまい、シャドウマップの残りの部分に対して十分な解像度が残らない。その著者らはこの問題を緩和するためにできる限り遠くにニア面を押し戻そうとシーンを解析することを提案している。加えて、ビュアーの投影を用いると、ライトの方向のほか、ライトの種類までも変化させる可能性がある(ディレクショナルからポイントまたはその逆)。これは、実装を複雑化する。

これらの問題はビュアーから透視変換を分離することで回避circumventされる。これは、ライトおよびビューに並行な変換でライト空間を曲げるwarpという、Light Space Perspective Shadow Maps (LiSPSM) [Wimmer et al. 2004Wimmer, M., Scherzer, D. and Purgathofer, W. 2004. Light space perspective shadow maps. Proceedings of the fifteenth eurographics conference on rendering techniques 143–151. https://diglib.eg.org/server/api/core/bitstreams/fc2f233d-529f-4261-a7e3-a74835553a29/content.]の主なアイデアである。ここで、透視変換は常にライト錐台の軸に並行であり、故に、ライトは方向または種類を変化させない(図8図10を参照)。ポイントライトを扱うために、ポイントライトの投影がまず適用され、ポイントライトをディレクショナルライトに変換して、LiSPSMがライトのポストパースペクティブ空間で行われる。分離された透視変換は自由パラメーター、すなわち、透視変換のニア面の距離nnを作り出すという追加の利点を持つ(図9を参照)。小さな距離はより強烈な湾曲やすぐ近くのオブジェクトへの集中focusを引き起こし、nnが大きくなれば引き起こされる湾曲が小さくなる。湾曲の手法に関するその後の研究のほとんどはこの枠組みを採用してきたことに注意していただきたい。LiSPSMにおいて、ニア面の距離は、均質的な品質を生成しようと取り得る深度の範囲全体で等しく誤差を分布させる方法で選ばれる(図11を参照)。

(図9:自由パラメーターnnの値の減少(左から右)は、ビュアー近くでシャドウマップの解像度の増加をもたらす。各画像は左上の角における湾曲したライトビューを示す。)

(図10:Light Space Perspective Shadow Mapsのパラメーター化(ライト空間でのYZ平面を示す)。パラメーターnnは自由であり、znz_n(Perspective Shadow Mapping)から無限大(Uniform Shadow Mapping)の間で変化できる。P\boldsymbol{P}はニア面の距離nnとファー面の距離ffによるLiSPSMで用いられる透視変換である。V\boldsymbol{V}は視錐台である。)

(図11:Uniform(左)、Perspective(中)、および、Light Space Perspectiveシャドウマップ(右)の比較。それぞれ1024x1024のシャドウマップを用いている。)

非常によく似たアプローチに、ニア面の距離を選ぶのにヒューリスティックを用いる、 Martin and Tan [2004Martin, T. and Tan, T.-S. 2004. Anti-aliasing and continuity with trapezoidal shadow maps. Eurographics workshop on rendering. 10.2312/EGWR/EGSR04/153-160. https://www.comp.nus.edu.sg/~tants/tsm.html.]Trapezoidal Shadow Maps (TSM)がある。非常に洞察に優れた研究として、 Lloyd et al. [2006Lloyd, D. B., Tuft, D., Yoon, S.-eui and Manocha, D. 2006. Warping and partitioning for low error shadow maps. Symposium on rendering. 10.2312/EGWR/EGSR06/215-226. https://gamma-web.iacs.umd.edu/WNP/files/WNP-REVISED.pdf.] はすべての遠近による湾曲アルゴリズムperspective warping algorithm (PSM、LiSPSM、TSM)が、両方のシャドウマップ方向を考慮するとき、同じ全体overall の誤差を実際に引き起こすが、LiSPSMが方向の間の最も均一な誤差分布をもたらし、故に、有利であることを証明した。

ChongとGortler[Chong 2003Chong, H. Y.-I. 2003. Real-Time Perspective Optimal Shadow Maps. https://www.eecs.harvard.edu/~sjg/papers/hcthesis%5B1%5D.pdf.; Chong and Gortler 2004Chong, H. Y. and Gortler, S. J. 2004. A lixel for every pixel. Proceedings of the fifteenth eurographics conference on rendering techniques 167–172. https://www.eecs.harvard.edu/~sjg/papers/lixel.pdf.; Chong and Gortler 2007Chong, H. Y. and Gortler, S. J. 2007. Scene Optimized Shadow Mapping. https://dash.harvard.edu/server/api/core/bitstreams/7312037d-b8f5-6bd4-e053-0100007fdf3b/content.]は複数のシャドウマップを用いることで有意義な面数の少なさでシャドウマップの品質を最適化する。彼らはコンピュータービジョンに由来する”plane-stabilization”技術を用いてこれらの面で完璧にサンプリングできることさえも示している(そのような面上のビューポートピクセルごとに、シャドウマップにおけるテクセルは厳密に同じ幾何的な点をサンプリングする)。それにも関わらず、そのような面にないピクセルは任意の誤差を示す。

4.2.1. 対数的湾曲(Logarithmic Warping)#

式1で示した単純化された誤差の数式を再び考えよう。最適なパラメーター化は深度の取り得る範囲全体でdp/dsdp/dsを定数(スクリーンとシャドウマップの解像度が等しいと仮定するため、1に等しい)にするだろう。ビュー方向がライト方向と垂直になる理想的なケースでは、これは(定数であるにも関わらず)[Wimmer et al. 2004Wimmer, M., Scherzer, D. and Purgathofer, W. 2004. Light space perspective shadow maps. Proceedings of the fifteenth eurographics conference on rendering techniques 143–151. https://diglib.eg.org/server/api/core/bitstreams/fc2f233d-529f-4261-a7e3-a74835553a29/content.]と等価である。

ds=dzz、すなわち、s=0sds=znzdzz=lnzznds = \frac{dz}{z} \text{、すなわち、} s = \int_0^s ds = \int_{z_n}^z \frac{dz}{z} = \ln \frac{z}{z_n}

これはシャドウマップに対する最適なパラメーター化が対数的であることを示している。より最近の研究では、 Lloyd et al. [2008Lloyd, D. B., Govindaraju, N. K., Quammen, C., Molnar, S. E. and Manocha, D. 2008. Logarithmic perspective shadow maps. ACM Trans. Graph. 27, 4. 10.1145/1409625.1409628. https://gamma.cs.unc.edu/LOGPSM/logpsm_tog08.pdf.] は対数マッピングを再考し、遠近による湾曲と組み合わせた(LogPSM)。非常に難解な数学の学術論文treatiseにおいて、彼らは、式2に由来する厳密なサンプリング方程式に基づいた、最適な定数誤差にかなりのところまで近づいた湾曲の関数を導出する。彼らは完全に汎用の3D構成も考慮している。

残念ながら、そのようなパラメーター化は現在のハードウェア上で実装に対して実践的ではない。つまり、対数は頂点プログラムには適用できるかもしれないが、ピクセルプログラムに対するピクセル位置やすべての入力パラメーターは双曲線的にhyperbolically補間される。これはグラフィクスハードウェアを対数マッピングではなく、遠近によるマッピングに従わせる。概念実証として、対数的ラスタライゼーションは最終プリミティブを包含boundすることが保証されるクアッドをレンダリングすることによってフラグメントシェーダーで厳密に計算することができるが、これは実践的な実装では低速すぎる。これを緩和するため、 Lloyd et al. [2007Lloyd, D. B., Govindaraju, N. K., Molnar, S. E. and Manocha, D. 2007. Practical logarithmic rasterization for low-error shadow maps. SIGGRAPH/eurographics workshop on graphics hardware. 10.2312/EGGH/EGGH07/017-024. https://gamma-web.iacs.umd.edu/LOGPSM/logRasterization.pdf.] は対数的ラスタライゼーションを実現可能にするためのラスタライゼーションパイプラインに対する単純な修正を提案するが、この修正は将来的にラスタライゼーションそれ自体がプログラマブルな構成要素となるまでグラフィクスハードウェアに実装されることはありそうにない。

4.2.2. 遠近による湾曲に対する最適な湾曲パラメーター#

以前に言及した通り、遠近による湾曲の手法にはPPに対する自由パラメーター、すなわち、投影基準点projection reference pointp\vec{p}からニア面への距離nnが存在する。このパラメーターはシャドウマップがどれだけ大きく曲げられるかに影響を与える。PPのニア面近くで選択される場合、遠近による歪みperspective distortionは強くなり、その効果は元のPerspective Shadow Mapsと似る(nnが視錐台ニア面距離と同様に選ばれるところで)。PPのファー面から遠くで選択される場合、遠近による効果は非常に軽く、Uniform Shadow Mapsに近づく。ライトベクトルに垂直なビュー方向のケースでは、このパラメーターに対する最適な選択は[Wimmer et al. 2004Wimmer, M., Scherzer, D. and Purgathofer, W. 2004. Light space perspective shadow maps. Proceedings of the fifteenth eurographics conference on rendering techniques 143–151. https://diglib.eg.org/server/api/core/bitstreams/fc2f233d-529f-4261-a7e3-a74835553a29/content.]であることを示すことができる。

nopt=zn+zfznn_{opt} = z_n + \sqrt{z_f z_n}

ここで、znz_nzfz_fはアイ視錐台のニアおよびファー面の距離である。図12は、Uniform Shadow Maps、オリジナルのPSMの論文にある通りの湾曲パラメーターを使ったPerspective Shadow Maps、最適な湾曲パラメーターを使ったもの、に対してビュアーのZ軸に沿ったエイリアシング誤差を比較する。ただし、この解析はZ方向に平行なシャドウマップ方向における誤差のみを取り扱うことに注意する。xx方向を考慮すると、PSMパラメーターは、プロットで確認できる通り、最適な定数誤差を実際に引き起こし、Z方向に沿った誤差は非常に不均等であり、ビュアーから離れるように動くときに非常に悪いシャドウ品質を引き起こす。最適なLiSPSMパラメーターは2つの軸の間で均等な誤差分布を引き起こす[Lloyd et al. 2008Lloyd, D. B., Govindaraju, N. K., Quammen, C., Molnar, S. E. and Manocha, D. 2008. Logarithmic perspective shadow maps. ACM Trans. Graph. 27, 4. 10.1145/1409625.1409628. https://gamma.cs.unc.edu/LOGPSM/logpsm_tog08.pdf.]

(図12:頭上にあるディレクショナルライトに対する様々なシャドウマップ技術ごとにZ座標に対してプロットされた遠近によるエイリアシング誤差。)

ビュアーがライトに向かって傾けられる、または、それから離れるとき、nnは増加する。そのため、ビュアーがライトを厳密に覗き込む、または、それから離れるとき、無限大に達する。この場合、遠近による湾曲はいかなる改善ももたらすことができず、それ故に、湾曲を適用する必要は一切ない。

より矛盾のないシャドウ品質を生成するより複雑なフォールオフ関数は[Zhang et al. 2006Zhang, F., Xu, L., Tao, C. and Sun, H. 2006. Generalized linear perspective shadow map reparameterization. Proceedings of the 2006 ACM international conference on virtual reality continuum and its applications 339–342. 10.1145/1128923.1128982. https://dl.acm.org/doi/pdf/10.1145/1128923.1128982.]で提案された。依然として、Z軸に沿った誤差のみを計算に入れているため、後に Lloyd [2007Lloyd, D. B. 2007. Logarithmic Perspective Shadow Maps (Thesis). https://gamma-web.iacs.umd.edu/papers/documents/dissertations/lloyd07.pdf.] のアプローチに取って代わられた。元のLiSPSMの論文では、シャドウマップの法線ベクトルとビュー面の法線ベクトルとの角度γ\gammaに依存するフォールオフが、nopt=nopt/sinγn'_{opt} = n_{opt} / \sin \gammaとすることで、導入された。しかし、 Lloyd [2007Lloyd, D. B. 2007. Logarithmic Perspective Shadow Maps (Thesis). https://gamma-web.iacs.umd.edu/papers/documents/dissertations/lloyd07.pdf.] は後に、その角度が視錐台の面のひとつとシャドウマップの法線とが並行になる点を通り過ぎると、このフォールオフが十分に速くないことを示した。彼はこの問題を回避する異なるフォールオフ関数を提案している。これはここに記載するにはいささか複雑すぎるので、我々は厳密な数式について[Lloyd 2007Lloyd, D. B. 2007. Logarithmic Perspective Shadow Maps (Thesis). https://gamma-web.iacs.umd.edu/papers/documents/dissertations/lloyd07.pdf.]の節5.1.2と5.2.1を読むことをおすすめする。従って、Lloydの方程式は実践的なシナリオで発生し得る一般的なケースでより堅牢である。

もうひとつの興味深い拡張として、nnの計算に対して異なる視錐台のニア面の距離を用いるものがある。その理論的根拠rationaleは、最も近い深度値(例えば、0.01から1の間)はしばしば可視のシャドウを含まないが、シャドウマップ中の多くの精度は最適な湾曲パラメーターを用いるこの範囲に浪費されている、という所にある。Lloydは自身の学位論文の節5.1.9で偽のニア面を用いて説明している。

依然として、これらの改善にも関わらず、湾曲ベースのアプローチの主な問題は残ったままである。角度γ\gammaが減少して0に近づく(ビューとライトの方向が並行になる)とき、湾曲は効果がなくなる。この場合、ある大局的な遠近による湾曲はビュアーのZ軸に沿ったサンプリング密度を変化することができず、故に、湾曲はUniform Shadow Mappingに劣化する。これはこのclassのアプローチがシャドウ品質の素早い変化の影響を受けやすくする。これは、時間的なちらつきアーティファクトを生み出す可能性がある。次の節で説明する分割の手法はこの観点においてより堅牢である。

4.3. 分割(Partitioning)#

湾曲の手法と対象的に、分割の手法は複数のシャドウマップを用いることで理想的なサンプリング分布を近似しようとする。

4.3.1. Z分割(Z-Partitioning)#

最も卓越したアプローチであり最も実践的なアルゴリズムのひとつは、Z軸に沿って視錐台を分割subdivideして、サブ錐台ごとに個々の同サイズのシャドウマップを計算することである。このアルゴリズムはplural sunlight buffers [ et al. 1999, Qin, X., Jiao, G. and 1999. Rendering optimal solar shadows using plural sunlight depth buffers. 1999 proceedings computer graphics international 166–173. 10.1109/CGI.1999.777935.]parallel split shadow maps (PSSM) [Zhang et al. 2006Zhang, F., Sun, H., Xu, L. and Lun, L. K. 2006. Parallel-split shadow maps for large-scale virtual environments. Proceedings of the 2006 ACM international conference on virtual reality continuum and its applications 311–318. 10.1145/1128923.1128975.]z-partitioning [Lloyd et al. 2006Lloyd, D. B., Tuft, D., Yoon, S.-eui and Manocha, D. 2006. Warping and partitioning for low error shadow maps. Symposium on rendering. 10.2312/EGWR/EGSR06/215-226. https://gamma-web.iacs.umd.edu/WNP/files/WNP-REVISED.pdf.]cascaded shadow maps (CSM) [Engel 2006Engel, W. 2006. Cascaded shadow maps. ShaderX5. http://www.shaderx5.com/index.htm.]の名で知られている。図13は視錐台が3つの区画partitionに分割されるPSSMの例を示し、中段の区画のマップに対するシャドウマップが強調される。このアプローチを用いると、同数のシャドウマップサンプルがより大きな範囲をカバーするので、サンプリング密度が後続の区画ごとに減少する。

(図13:PSSM: 左: 視錐台の3つの区画の中段に対するシャドウマップ(サイドビュー)が強調される。右: 区画の境界ボリュームが3Dで示される。はめ込まれたものinlaysはシャドウマップを示す。)

最もナイーブな実装では、nnヶの区画を持つPSSMスキームはnn回のシャドウレンダリングパスを必要とする。 Zhang et al. [2007Zhang, F., Sun, H. and Nyman, O. 2007. Parallel-Split Shadow Maps on Programmable GPUs. GPU Gems 3. https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-10-parallel-split-shadow-maps-programmable-gpus.] はレンダリングパスの数を減らす3つの異なる手法を説明する。1つ目に、彼らはシャドウマップを生成およびレンダリングするために複数のパスを用いるナイーブな手法を計算する。この手法はシェーダーを必要とせず、故に、古いハードウェアで動作するが、新しいハードウェアや複雑なシーンでは最も低速な手法でもある。2つ目の手法はシェーダーを使い、それによってレンダリングでの複数パスを回避する。これはGeForce 8800とそれ以降で最大30%の高速化をもたらす。3つ目の手法は、ジオメトリシェーダーか進化したインスタンシングを用いて、シャドウマップレンダリングパス中に必要なシャドウマップのそれぞれに各トライアングルを複製することによって同様にシャドウマップを生成する複数パスを回避する。著者らはこの手法がパフォーマンスを更に増加させると言及しているが、彼らの論文にはこの記述を確認するための数値データが与えられていない。

この手法に対する最も重要な問題questionは分割面を置く場所である。方法のひとつに、シャドウマップのリサンプリング誤差の導出に立ち戻るというものがある。各サブシャドウマップはグローバルシャドウマップの大きなテクセルとして解釈できたので、Z分割は任意の湾曲関数の離散化となる。我々は最適な湾曲関数が対数であることを以前に示したので、故に分割位置CiC_i[Lloyd et al. 2006Lloyd, D. B., Tuft, D., Yoon, S.-eui and Manocha, D. 2006. Warping and partitioning for low error shadow maps. Symposium on rendering. 10.2312/EGWR/EGSR06/215-226. https://gamma-web.iacs.umd.edu/WNP/files/WNP-REVISED.pdf.]のように決定される必要がある。

Ci=zn(zfzn)imC_i = z_n \left( \frac{z_f}{z_n} \right)^{\frac{i}{m}}

ここで、mmは分割数である。しかし、大局的な湾曲スキームとは対象的に、Z分割の効果はシャドウマップの軸に制限されず、ライトがビュアーのすぐ背後にあるときでも動作する(図14を参照)。これは湾曲アプローチに勝るZ分割の主な利点であり、Z分割が一般的な構成でより堅牢である理由である。図14の左図ではビュアーのすぐ背後にライトがある状況での最も近い区画と最も遠い区画を示している。最も近い区画のシャドウマップは最も小さい範囲をカバーし、それ故に、ビュアーの投影の場合と同程度に、知覚される解像度は高い。例えば、 et al. [1999, Qin, X., Jiao, G. and 1999. Rendering optimal solar shadows using plural sunlight depth buffers. 1999 proceedings computer graphics international 166–173. 10.1109/CGI.1999.777935.]Engel [2006Engel, W. 2006. Cascaded shadow maps. ShaderX5. http://www.shaderx5.com/index.htm.] はビューベクトルに沿った錐台を幾何的に増加するサブボリュームに分割する。図15は背後からのライトのケースにおけるZ分割と湾曲の直接比較を示す。

(図14:湾曲が失敗するケースでもPSSMは動作する。例えば、光が背後から来るとき。)

(図15:光が背後から来る場合、湾曲(左)は十分でない結果をもたらす。一方のZ分割(右)は優れた結果をもたらす。フラグメントごとに使われるシャドウマップが色分けcolor codedされる。)

[Zhang et al. 2006Zhang, F., Sun, H., Xu, L. and Lun, L. K. 2006. Parallel-split shadow maps for large-scale virtual environments. Proceedings of the 2006 ACM international conference on virtual reality continuum and its applications 311–318. 10.1145/1128923.1128975.]は、ほとんどオブジェクトが存在しないis rarely populated with objectsニア面近くに最も大きな解像度を割り当てるので、最適な分割スキームがしばしば実践的でないことに言及noteしている。故に、彼らは対数スキームと単純な等距離の分割面分布の間の重み付き平均として分割位置を計算することを提案する。シャドウマップエイリアシングの理論的特性をより尊重する代替の解法は湾曲によるものと同程度の偽のニア面を用いることである。このアプローチはLloydの学位論文[2007Lloyd, D. B. 2007. Logarithmic Perspective Shadow Maps (Thesis). https://gamma-web.iacs.umd.edu/papers/documents/dissertations/lloyd07.pdf.]の節5.1.8で説明される。

[Zhang et al. 2009Zhang, F., Zaprjagaev, A. and Bentham, A. 2009. Practical Cascaded Shadow Maps. ShaderX7. http://www.shaderx7.com/.]もまた、ちらつきアーティファクト、シャドウマップストレージ戦略、分割の選択、テクスチャー座標の計算、分割間のフィルタリングに関するZ分割の実践的な問題の数々を議論する。興味深い所見observationとして、いくつかのケースでは、ひとつの区画に属する点が異なる区画に対して生成されたシャドウマップを用いて影付けされる必要がある、というものがある。これはライトがビュー方向にほぼ並行であるときに発生する。この場合、視点により近い区画に対するシャドウマップはより良い解像度を提供する。

依然として、配置とZ分割の大きさを手で最適化することは、特に深度範囲全体がシャドウでカバーされない場合に、優れた結果をもたらすことができる。この手動の調整を回避するため、 Lauritzen [2010Lauritzen, A. 2010. Sample Distribution Shadow Maps. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2010/index.html.] はCascaded Shadow Mapsの確率論的な拡張を発表した。そのアイデアは区画ごとにタイトなライト空間の境界を見つけるために現在のフレームに必要となるシャドウサンプル分布を解析することにある。このアプローチの主な制限はクラスタリングアプローチが、最新のハードウェアでのみ実現可能である、深度のヒストグラムの計算を必要とすることである。

4.3.2. 錐台面分割(Frustum Face Partitioning)#

もうひとつの代替の分割スキームとして、シャドウマップ面に投影される視錐台の面ごとに個々のシャドウマップを用いて、そして、個別にシャドウマップごとに湾曲を用いることがある。これはポストパースペクティブの視錐台の周囲にキューブマップを置き、キューブの面ごとにシャドウマップを適用することと解釈することもできる[Kozlov 2004Kozlov, S. 2004. Perspective Shadow Maps: Care and Feeding. GPU Gems. https://developer.nvidia.com/gpugems/gpugems/part-ii-lighting-and-shadows/chapter-14-perspective-shadow-maps-care-and-feeding.]。各錐台面は品質を増加させるためにさらに分割することができる。

このスキームは、LogPSM、すなわち、 Lloyd et al. [2008Lloyd, D. B., Govindaraju, N. K., Quammen, C., Molnar, S. E. and Manocha, D. 2008. Logarithmic perspective shadow maps. ACM Trans. Graph. 27, 4. 10.1145/1409625.1409628. https://gamma.cs.unc.edu/LOGPSM/logpsm_tog08.pdf.] が導入したLogarithmicおよびPerspective Shadow Mappingの組み合わせに対して最適であることを示すことができるので、特に重要である。しかし、 Lloyd et al. [2007Lloyd, D. B., Govindaraju, N. K., Molnar, S. E. and Manocha, D. 2007. Practical logarithmic rasterization for low-error shadow maps. SIGGRAPH/eurographics workshop on graphics hardware. 10.2312/EGGH/EGGH07/017-024. https://gamma-web.iacs.umd.edu/LOGPSM/logRasterization.pdf.] もまた実践的な状況、すなわち、ファー面とニア面の比が大きく、シャドウマップ数が少ない状況で(任意に湾曲と組み合わせた)Z分割が錐台分割より優れていることを示したので、ここではこのスキームを詳しく説明elaborateしない。

粗いシーン解析を組み込んだ異なるシャドウマップバッファへの分割は Forsyth [2006Forsyth, T. 2006. Making shadow buffers robust using multi- ple dynamic Shadow Maps. ShaderX4. https://tomforsyth1000.github.io/papers/papers.html.] によって説明される。このアイデアはシャドウレシーバーが視点への距離に従って異なるシャドウマップに分割できることにある。最適化された投影はこれらのクラスタのそれぞれで使うことができ、それによって、シャドウを生成するだけで良くなった。このスキームはシャドウがシーンにおいてまばらにsparsely発生するのみである場合に利点を持つことができるが、(シャドウがどこにでも存在する)一般的な設定では、(シーン解析の追加のオーバーヘッドを持つ)Z分割が理想的である。

4.3.3. 適応的分割(Adaptive Partitioning)#

これまでに議論した分割アルゴリズムの利点はこれらが非常に高速であることである。その一方で、これらは表面の向きを完全に無視するので、光源によってほぼ真横から見える表面、すなわち、投影によるエイリアシングに起因するアンダーサンプリングを改善しない。

アルゴリズムにはシャドウマップを生成する前にシーンを解析することでより最適な方法でサンプルを割り当てようとするものが多く存在する。これは解析方法によるいくつかのオーバーヘッドを必然的に負うが、一般的なケースでははるかに良い結果をもたらす。これはしばしば、以前には非常に高価な方法であった、フレームバッファの読み戻しread-backを必要とする。とは言うものの、このコストは最近のハードウェアでは減少傾向にあり、これらの手法は実践的な用途として徐々に興味深いものとなってきている。有名なprominent例として、Adaptive Shadow Maps (ASM) [Fernando et al. 2001Fernando, R., Fernandez, S., Bala, K. and Greenberg, D. P. 2001. Adaptive shadow maps. Proceedings of the 28th annual conference on computer graphics and interactive techniques 387–390. 10.1145/383259.383302. https://www.cs.cornell.edu/~kb/publications/ASM.pdf.; Lefohn et al. 2005Lefohn, A., Sengupta, S., Kniss, J., Strzodka, R. and Owens, J. D. 2005. Dynamic adaptive shadow maps on graphics hardware. ACM SIGGRAPH 2005 sketches 13–es. 10.1145/1187112.1187126.]Resolution Matched Shadow Maps (RMSM) [Lefohn et al. 2007Lefohn, A. E., Sengupta, S. and Owens, J. D. 2007. Resolution-matched shadow maps. ACM Trans. Graph. 26, 4, 20–es. 10.1145/1289603.1289611.]Queried Virtual Shadow Maps (QSM) [Giegl and Wimmer 2007Giegl, M. and Wimmer, M. 2007. Queried virtual shadow maps. Proceedings of the 2007 symposium on interactive 3D graphics and games 65–72. 10.1145/1230100.1230112. https://www.cg.tuwien.ac.at/research/publications/2007/GIEGL-2007-QV1/GIEGL-2007-QV1-Preprint.pdf.]Fitted Virtual Shadow Maps (FVSM) [Giegl and Wimmer 2007Giegl, M. and Wimmer, M. 2007. Fitted virtual shadow maps. Proceedings of graphics interface 2007 159–168. 10.1145/1268517.1268545. https://www.cg.tuwien.ac.at/research/publications/2007/GIEGL-2007-FVS/GIEGL-2007-FVS-Preprint.pdf.]Tiled Shadow Maps (TiledSM) [Arvo 2004Arvo, J. 2004. Tiled shadow maps. Proceedings computer graphics international, 2004. 240–246. 10.1109/CGI.2004.1309216.]がある。

これらのアプローチのすべてはシャドウマップを精錬refineするために階層的データ構造(通常は四分木)に頼っている。これらは主に停止基準termination criteria、および、停止基準を決定するために必要な尺度measuresにおいて異なる。

シャドウマップに適応的な分割を導入した最初のアプローチは Fernando et al. [2001Fernando, R., Fernandez, S., Bala, K. and Greenberg, D. P. 2001. Adaptive shadow maps. Proceedings of the 28th annual conference on computer graphics and interactive techniques 387–390. 10.1145/383259.383302. https://www.cs.cornell.edu/~kb/publications/ASM.pdf.]Adaptive Shadow Mapsである。そのアイデアは高品質なシャドウマップはシャドウのエッジで高解像度を必要とするのみであることにある。故に、シャドウマップは階層的格子構造(四分木)に格納される。各四分木ノードはそれに紐付いたattached固定の解像度のシャドウマップを持つ。フレームごとにそのノードは利用可能なシャドウマップ解像度を増加させるために繰り返し分割できる(分割ごとに新しいシャドウマップを生成する)。Lefohn et al. [2005Lefohn, A., Sengupta, S., Kniss, J., Strzodka, R. and Owens, J. D. 2005. Dynamic adaptive shadow maps on graphics hardware. ACM SIGGRAPH 2005 sketches 13–es. 10.1145/1187112.1187126.; 2007Lefohn, A. E., Sengupta, S. and Owens, J. D. 2007. Resolution-matched shadow maps. ACM Trans. Graph. 26, 4, 20–es. 10.1145/1289603.1289611.]はスクリーン空間のピクセルの影付けを解決するのに必要とされるすべてのシャドウマップテクセルを生成するためにエッジ検出フェーズを取り除くことでこの手法を適合させる(Resolution Matched Shadow Maps (RMSM))。このアプローチをGPUで実現可能にするため、著者らはアイ空間とライト空間との間の一貫性coherenceを用いる。彼らはイメージ空間で連続的に可視である表面がライト空間でも同様であると仮定し、これらの表面を見つけるための連結成分解析connected-components analysisを用い、これらのそれぞれにシャドウマップページを要求する。

Giegl and Wimmer [2007Giegl, M. and Wimmer, M. 2007. Queried virtual shadow maps. Proceedings of the 2007 symposium on interactive 3D graphics and games 65–72. 10.1145/1230100.1230112. https://www.cg.tuwien.ac.at/research/publications/2007/GIEGL-2007-QV1/GIEGL-2007-QV1-Preprint.pdf.] により導入されたQueried Virtual Shadow Maps (QVSM)は、停止基準を計算するために読み戻しを必要とせず、GPU上で階層的データ構造を実装する必要がないので、恐らく最も実装しやすい適応的分割スキームである。そのアイデアは非常に単純である。シャドウマップで確認される精錬由来の実際の変化が事前に定義されたしきい値を下回るまでシャドウマップ階層を精錬する。より厳密に言うならば、初期のシャドウマップ(例えば、2048x2048)から始まり、このシャドウマップは再びそれぞれが2048x2048の解像度を持つ2x2のサブタイルに分割される。そのような精錬ステップの後に毎回、シーンは精錬されたシャドウマップを用いて影付けされ、その影付けの結果は前のステップの結果と比較される。変化したピクセルの特定のしきい値がタイル内で超過される場合、精錬は継続される。これを高速にする方法は、前のものとの比較でより精錬されたシャドウマップを適用するときに異なるピクセル数を数えるためにオクルージョンクエリのメカニズムを用いることでGPU上ですべての計算を行うことである。QVSMは、精錬の試行ごとに1回という、比較的多くのシーンレンダリングパス数を必要とする。シーンを複数回再レダリングするのを避けるため、まずシーンは線形の深度バッファにレンダリングされ、各レンダリングパスはシャドウを計算するのにこのバッファだけを用いる(Deferred Shadowingとも呼ばれる)。図16はQVSMと大きな標準のシャドウマップの比較を示す。

(図16:左: 標準の4096x4096のシャドウマップ。右: 32x32の最大精錬レベルと2048x2048のタイルを持つQVSM。)

QVSMでシャドウレンダリングパス数が大きくならないようにするために、 Giegl and Wimmer [2007Giegl, M. and Wimmer, M. 2007. Fitted virtual shadow maps. Proceedings of graphics interface 2007 159–168. 10.1145/1268517.1268545. https://www.cg.tuwien.ac.at/research/publications/2007/GIEGL-2007-FVS/GIEGL-2007-FVS-Preprint.pdf.] は四分木においてどれだけの最終精錬レベルが必要になるかを前もって定めようとするFitted Virtual Shadow Mmaps (FVSM)を導入した。このため、シーンはプリパスでレンダリングされるが、実際にシーンを影付けするのではなく、このパスではそのクエリの場所で必要なシャドウマップ解像度とともにクエリの場所をシャドウマップに記録するだけである。その後、結果のバッファはCPUに転送される。そこで、このバッファの各サンプルはシャドウマップ空間に変換され、CPUの効率的な分散能力scattering capabilitiesを利用するために、低解像度バッファに格納される。このバッファはシャドウマップの各範囲における必要な解像度を最終的にultimately含み、四分木構造はここから導出できる。読み戻しによるペナルティを減らすため、プリパスでは小さなフレームバッファがレンダリングされるのみである。Adaptive Shadow Maps [Fernando et al. 2001Fernando, R., Fernandez, S., Bala, K. and Greenberg, D. P. 2001. Adaptive shadow maps. Proceedings of the 28th annual conference on computer graphics and interactive techniques 387–390. 10.1145/383259.383302. https://www.cs.cornell.edu/~kb/publications/ASM.pdf.; Lefohn et al. 2005Lefohn, A., Sengupta, S., Kniss, J., Strzodka, R. and Owens, J. D. 2005. Dynamic adaptive shadow maps on graphics hardware. ACM SIGGRAPH 2005 sketches 13–es. 10.1145/1187112.1187126.]と比較して、QVSMとFVSMの両方は新たにanewフレームごとに階層全体を計算するのに十分高速であり、それ故に、動的なシーンに対して上手く動作する。これは、精錬レベルを計算するのに反復的なエッジ検出アルゴリズムに依存し、それ故に、最近使用したタイルをキャッシュする必要があるASMとは対称的である。

RMSMは、FVSMと幾らか同じように、反復ステップを回避したり、必要な解像度を直接的に計算したりすることによって、特に動的なシーンでASMに改良を加える。両方のアルゴリズムもまた(四分木やソートのような)データ並列なGPUアルゴリズム[Lefohn et al. 2006Lefohn, A. E., Sengupta, S., Kniss, J., Strzodka, R. and Owens, J. D. 2006. Glift: Generic, efficient, random-access GPU data structures. ACM Trans. Graph. 25, 1, 60–99. 10.1145/1122501.1122505.]を標準のレンダリングと混ぜ合わせる。RMSMでは、すべてのステップがGPUで実際に行われる一方、FVSMはCPUで必要な細分化subdivisionレベルを計算するが、それは低解像度バッファで行われる。

Tiled Shadow Maps [Arvo 2004Arvo, J. 2004. Tiled shadow maps. Proceedings computer graphics international, 2004. 240–246. 10.1109/CGI.2004.1309216.]は深度の不連続性、距離、その他のファクターに基づいた階層的な解析に従ってサンプリング品質を変化させるためにライトビュー(ここでは固定解像度のシャドウマップ)をタイル化する。これは厳しいhardメモリ制限を設定することを可能にし、それによって、品質と速度をトレードする。

4.4. 湾曲と分割の比較(Comparison of Warping and Paritioning)#

湾曲と分割は直交しているアプローチであり、故に、組み合わせることができる。例えば、Z分割に対して、各区画はLiSPSMを用いてレンダリングできる。これは特にLiSPSMが上手く働く(頭上にライトがある)状況で品質を増加させる。図17は湾曲のありなしでのZ分割の効果を示す。

(図17:湾曲あり(左)と湾曲なし(右)での3つのシャドウマップを用いたZ分割)

そのような組み合わせの特殊なケースのひとつに、Uniform Shadow MapひとつとPerspective Shadow Mapひとつを用いて、片方が最適な品質をもたらすように範囲を分ける平面の式を計算するものがある[Mikkelsen 2007Mikkelsen, M. S. 2007. Separating-plane perspective shadow mapping. Journal of Graphics Tools 12, 3, 43–54. 10.1080/2151237X.2007.10129246.]

図18は全体の誤差(ここでは、storage factorと呼ばれる)を示す。これは、両方のシャドウマップ方向での、頭上にあるライト(湾曲に対して理想的)および背後にあるライト(できるだけ湾曲なし)の異なるシャドウマップ数に対する異なるスキームの誤差を計算に入れている。

(図18:シャドウマップ数の変化による異なるスキームの総誤差。FPは錐台面分割、ZPはZ分割、Wは湾曲(図はBrandon Lloydの厚意による)。)

4.5. 不規則サンプリング(Irregular Sampling)#

シャドウマッピングの第2パスでは、すべてのスクリーン空間のフラグメントはクエリされるためにシャドウマップに再投影される。ハードシャドウマッピングにおけるエイリアシングアーティファクトはシャドウマップのクエリ位置がシャドウマップのサンプル位置に対応しないという事実から生じるstem from (図19を参照)。理想的には、後にクエリされるであろうこれらの位置で厳密にシャドウマップサンプルを生成したい。不規則サンプリング手法のアイデアは望ましいサンプル位置を得るために最初のアイ空間パスをレンダリングすることにある。これらのサンプル位置はその後に後続のシャドウマップ生成パスのためのピクセル位置として使われ、それによって、シャドウマップテストに最適なサンプルをスクリーン空間の各フラグメントにもたらし、すべてのエイリアシングアーティファクトを除去する。これの課題challengeはこれらの新しいサンプル位置がもはや規則的な格子にないことである。故に、ビューサンプルの正確なシャドウアルゴリズムは不規則なラスタライゼーションの問題を解決しなければならない。

(図19:シャドウマップにおける規則的な格子上に作成されるサンプルはアイ空間で不規則になり得る(左上)、また、その逆(右上)。それ故に、規則的シャドウマッピングはアンダーサンプリングアーティファクトを引き起こし得る(左下)。一方、不規則シャドウマッピングはアイ空間のサンプルごとにシャドウマップをサンプルすることでアーティファクトを回避する(右下)。)

Johnson et al. [2004Johnson, G. S., Mark, W. R. and Burns, C. A. 2004. The Irregular Z-Buffer and its Application to Shadow Mapping. http://www.billmark.com/papers/ism-TR/TR04-09.pdf.; 2005Johnson, G. S., Lee, J., Burns, C. A. and Mark, W. R. 2005. The irregular Z-buffer: Hardware acceleration for irregular data structures. ACM Trans. Graph. 24, 4, 1462–1482. 10.1145/1095878.1095889. https://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/readings/johnson05_irregularzbuf.pdf.]はハードウェア拡張を提案する。彼らは不規則サンプリングを可能にするために規則的なシャドウマップの各格子要素で再投影されたビューサンプルのリストを格納する。彼らはこの構造を不規則Zバッファと呼ぶ。これにより、彼らは光源の視点からシャドウをキャストする各トライアングルを投影することでビューサンプルごとにシャドウテストをクエリすることができる。遮蔽されたcovered各ラスタライズ済みフラグメントは格納されたビューサンプルのそれぞれに対してテストされなければならず、影の中にあるこれらはフラグが立てられる。フラグメントの中心にある位置がラスタライズされたポリゴンの中にあるサンプルを生成するのみである標準のラスタライゼーションと異なり、このアプローチは各フラグメントが持つ各トライアングルの重なりを計算する必要がある。これは、アイ空間のサンプルが各格子要素の内部の任意の位置にあるので、必須である。最後に、スクリーン空間のクアッドはアイ空間でレンダリングされる。ここでは、各フラグメントがシャドウフラグに対してそれに対応するリストのエントリをテストすることでシャドウクエリを行う。

Alias-free Shadow Maps [Aila and Laine 2004Aila, T. and Laine, S. 2004. Alias-free shadow maps. Proceedings of the fifteenth eurographics conference on rendering techniques 161–166. https://users.aalto.fi/~laines9/publications/aila2004egsr_paper.pdf.]は必要とされるサンプル点でのシャドウ情報を効率的に計算するために軸並行axis-alignedのBSP木を用いた階層的なソフトウェア実装を提供する。このアプローチは後に Arvo [2007Arvo, J. 2007. Alias-free shadow maps using graphics hardware. Journal of Graphics Tools 12, 1, 47–59. 10.1080/2151237X.2007.10129231.] および Sintorn et al. [2008Sintorn, E., Eisemann, E. and Assarsson, U. 2008. Sample based visibility for soft shadows using alias-free shadow maps. Computer Graphics Forum 27, 4, 1285–1292. 10.1111/j.1467-8659.2008.01267.x. https://inria.hal.science/inria-00345285/PDF/softshadows2008EGSR.pdf.] によってグラフィクスハードウェアに対応した。このアプローチはJohnson et al.のものと非常に似ているが、シャドウマップ要素で格納されるリストが一定のメモリフットプリントで実現されるので、いかなるハードウェアの変更も必要ない。彼らは保守的ラスタライゼーションを用いることで重なりの計算をハードウェアに対応させることを可能にもする。この手法は再パラメーター化の手法と組み合わせるのに適し、実践では、著者らは[Brabec et al. 2002Brabec, S., Annen, T. and Seidel, H.-P. 2002. Practical shadow mapping. Journal of Graphics Tools 7, 4, 9–18. 10.1080/10867651.2002.10487567. https://doi.org/10.1080/10867651.2002.10487567.]で説明されるフィッティングアプローチの一種を実装した。正確なピクセル毎per-pixelシャドウでもスーパーサンプリングを導入することでさらに改善できる。 Pan et al. [2009Pan, M., Wang, R., Chen, W., Zhou, K. and Bao, H. 2009. Fast, sub-pixel antialiased shadow maps. Computer Graphics Forum 28, 7, 1927–1934. 10.1111/j.1467-8659.2009.01571.x. http://www.cad.zju.edu.cn/home/bao/pub/Fast_Sub-pixel_Antialiased_Shadow_Maps.pdf.] はそのような手法を発表している。これは、[Sintorn et al. 2008Sintorn, E., Eisemann, E. and Assarsson, U. 2008. Sample based visibility for soft shadows using alias-free shadow maps. Computer Graphics Forum 27, 4, 1285–1292. 10.1111/j.1467-8659.2008.01267.x. https://inria.hal.science/inria-00345285/PDF/softshadows2008EGSR.pdf.]を拡張することでブルートフォースなスーパーサンプリングを回避する。その主なアイデアは(単なる点の代わりに)ファセットfacetsと呼ばれる小さな3Dの四角形quadranglesによってピクセルを近似することにある。これらのファセットはピクセルの面積を説明するaccount for。潜在的なブロッカーはファセットを介してスクリーン空間に投影される。ここで、ピクセルあたり複数のサンプルを持つ遮蔽マスクはサブピクセルシャドウを計算するのに使われる。

4.6. 時間的再投影(Temporal Reprojection)#

最後に、サンプリングレートを増加させる方法のひとつに、再投影を介して前フレームからサンプルを再利用することによるものがある[Scherzer et al. 2007Scherzer, D., Jeschke, S. and Wimmer, M. 2007. Pixel-correct shadow maps with temporal reprojection and shadow test confidence. Proceedings of the 18th eurographics conference on rendering techniques 45–50. 10.2312/EGWR/EGSR07/045-050. https://www.cg.tuwien.ac.at/research/publications/2007/Scherzer-2007-PCS/Scherzer-2007-PCS-Preprint.pdf.]。その主なアイデアは、ずっと大きな実効解像度となるように、各フレームで別々にシャドウマップのビューポートをジッタリングすることと、いくつかのフレーム全体で結果を組み合わせることにある。

この手法は前フレームの累積された履歴を格納するための追加のバッファを必要とする。現在のフレームでは、シャドウマップ探索の結果は前フレームで計算された累積結果と組み合わせられる。これは、(動きを計算に入れるために)再投影を用いて探索できる。新しいサンプルと再投影されたサンプルの間に深度の不連続性が検出される場合、それは恐らく遮蔽されなくなったことdisocclusionに起因するので、古い結果は破棄される。

(図20:LiSPSMは1024x1024のシャドウマップ解像度と1680x1050のビューポートに対して良好な結果をもたらすが、時間的再投影は、シャドウマップ解像度によって制限されないので、さらに良い結果をもたらすことができる。)

このアプローチにおけるシャドウ品質は現フレームと前フレームとの間の重みの選択を最適化することによってピクセルパーフェクトな結果に収束するように実際にさせることができる(図20参照)。その重みはシャドウ探索の信頼度confidence に従って決定される。

confx,y=1max(xcenterx,ycentery)2\text{conf}_{x,y} = 1 - \text{max} \left( |x - \text{center}_x|, |y - \text{center}_y| \right) \cdot 2

ここで、confx,y\text{conf}_{x,y}はシャドウマップにおける(x,y)(x,y)に投影されたフラグメントの信頼度であり、(centerx,centery)(\text{center}_x, \text{center}_y)は対応するシャドウマップテクセルの中心である。

シャドウマップテクセルの中心近くでのみ、サンプルがシーンのジオメトリを実際に表現する可能性が非常に高くなるので、信頼度は探索がシャドウマップテクセルの中心近くに位置するfallほど高くなる。

再投影ベースのアプローチは素早い動きの後では収束するのに数フレームかかることに注意する。また、これらは動いているオブジェクトや動いている光源を上手く扱うことができない。一方で、これらは、例えば、シャドウマップのフォーカシングに由来する時間的エイリアシングを実質的に除去する。

5. 深度バイアス(Depth Biasing)#

不正確なセルフシャドウincorrect self-shadowing やシャドウアクネshadow acne の名で知られる問題はアンダーサンプリングやテクセルごとにシャドウマップに格納される深度情報の精度不足imprecisionによって引き起こされる。一方では、深度は固定または浮動のいずれかの小数点表現を用いて限定された精度で表現され、これらの精度不足は誤った結果をもたらし得る。他方では、投影されたビュー空間の各フラグメントの深度は単一のシャドウマップからのシャドウマップと比較される。この深度は元のサンプリング点でのみ正確であるが、テクセル範囲全体で使われる。このテクセル範囲がビュー空間で大きい場合、アンダーサンプリングにより、不正確なシャドウテストの出力が結果となり得る(図21を参照)。

(図21:左:ポリゴンはシャドウマップにおける不十分なサンプリングおよび深度精度のためにそれ自体を影付けする。右:これは結果としてz-fightingとなる。)

標準的な解法は、ユーザー定義された深度バイアス、すなわち、これらをさらに離すためにシャドウマップの深度値に追加する小さな増加である(図22の左を参照)。これはシャドウキャスターをライトから離し、故に、新しい深度がレシーバーの深度より遠く離れている場合、ライトリークをもたらし得る(図22の右を参照)。ひとつのバイアス設定をジオメトリのより広い範囲に適用できるようにするため、ほとんどの実装はポリゴンの傾斜slopeに依存する第2パラメーターを提供する(slope-scale biasing)。それにも関わらず、深度バイアスはシーンに強く依存し、一般に、任意のシーンに対する自動的な解法は一切存在しない。この手法の主な利点はその単純さとハードウェアを通じたサポートである。

(図22:深度バイアスは不正確なセルフシャドウを除去できる(左)が、ライトリークをもたらす可能性もある(右)。)

精度問題をさらに悪化させるaggravateファクターとして、ポイント(スポット)ライト、PSM、TSM、LispSM、類似の再パラメーター化手法によってもたらされる深度値の非線形分布がある。この深度値の非線形分布は1/w1/w項を含む透視変換によって生成され、双曲線的な深度値分布を生成する。これを打ち消すcounteractために、 Brabec et al. [2002Brabec, S., Annen, T. and Seidel, H.-P. 2002. Practical shadow mapping. Journal of Graphics Tools 7, 4, 9–18. 10.1080/10867651.2002.10487567. https://doi.org/10.1080/10867651.2002.10487567.] は線形に分布した深度値を提案した。似たアプローチがTrapezoidal Shadow Maps (TSM [Martin and Tan 2004Martin, T. and Tan, T.-S. 2004. Anti-aliasing and continuity with trapezoidal shadow maps. Eurographics workshop on rendering. 10.2312/EGWR/EGSR04/153-160. https://www.comp.nus.edu.sg/~tants/tsm.html.])で選ばれた。そこでは、著者らは透視変換からZ座標を省略することを推奨している。 Kozlov [2004Kozlov, S. 2004. Perspective Shadow Maps: Care and Feeding. GPU Gems. https://developer.nvidia.com/gpugems/gpugems/part-ii-lighting-and-shadows/chapter-14-perspective-shadow-maps-care-and-feeding.] はワールド空間でPSMにslope-scale biasingを用い、後にその結果をポストパースペクティブ空間に変換することを提案している。LispSMは抱えるセルフシャドウアーティファクトに関する問題は少なく、通常のslope-scale biasingを用いることができる。

深度バイアスを取り除くため、 Woo [1992Woo, A. 1992. The shadow depth map revisited. Graphics gems III 338–342.] は第1と第2の深度表面の平均を計算し、深度比較に(Midpoint Shadow Map名付けられた)この平均深度を用いることを提案する。これは第2深度レイヤーを得るための何らかの種類のdepth peelingのオーバーヘッドをもたらす。

Wang and Molnar [1994Wang, Y. and Molnar, S. 1994. Second-Depth Shadow Mapping. https://www.cs.unc.edu/techreports/94-019.pdf.] によって提案されるSecond-depth shadow mappingは光源に2番目に近い表面の深度のみを用いる単純なアイデアのもとに構築される。これは、シャドウキャスターがソリッドオブジェクトである場合に背面backsideレンダリングによって効率的に行うことができる。シャドウマップの深度比較はキャストしているジオメトリの背面に移され、光源と向かい合うポリゴンに対してシャドウテストをより堅牢にする。本質的に、これはシャドウキャスターの厚さの大小による適応的深度バイアスをもたらす。これはシャドウがキャストしている背面でのライトリークももたらす。幸いなことに、いずれにしても、これらの背面は標準のディフューズ照明モデルの応用によって影の中にあることを決定することができる。それと関係なくnevertheless、最も近い表面とその次に近い表面との差が大きくなる(シャドウキャスターの厚さが大きくなる)可能性により、精度不足は起こり得る。この問題はdual shadow mapsWeiskopf and Ertl [2003Weiskopf, D. and Ertl, T. 2003. Shadow mapping based on dual depth layers. Eurographics 2003 - short presentations. 10.2312/egs.20031069.] によって扱われている。彼らは事実上シャドウキャスターの厚さを制限するパラメーターを再導入する。

バイアスする必要性を完全に回避できる手法は Hourcade and Nicolas [1985Hourcade, J.C. and Nicolas, A. 1985. Algorithms for antialiased cast shadows. Computers & Graphics 9, 3, 259–265. 10.1016/0097-8493(85)90052-4.] によって導入された。ユニークなポリゴンIDがシャドウマップにおける深度の代わりに格納される。比較すると、同じIDが見つかる(照らされる)か、異なるIDが現れる(影の中にある)のいずれかである。ユニークIDを格納するのに、8ビットチャネルひとつ(256ヶのID)ではほとんどのケースで不十分であろう。IDひとつだけがテクセルあたりに格納できるので、トライアングル1つ以上がテクセルあたりに現れるならば、このメカニズムは破綻するbreak down

6. 再構築およびオーバーサンプリング誤差を減らすための戦略(trategies to Reduce Reconstruction and Oversampling Errors)#

標準のシャドウマップテストの結果は二値、すなわち、フラグメントが影の中にあるか否かであり、シャドウマップのアンダーサンプリングしている部分に対してハードなギザギザjaggedのシャドウマップエッジを生成する。信号処理の観点から、これはボックスフィルターを用いた再構築に対応する。カラーテクスチャーで使われているような伝統的なバイリニア再構築は、補間された深度値との深度比較が依然として改善された再構築ではなく(さらに不正確な)二値の結果をもたらすので、シャドウマップに対して不適切である。

(図23:左図にあるアンダーサンプリングしているフィルタリングしていないシャドウマップはハードなギザギザのエッジに悩まされる。これらはフィルタリングで取り除くことができる。右図では、2x2カーネルによるハードウェアPCFを適用している。)

Reeves et al. [1987Reeves, W. T., Salesin, D. H. and Cook, R. L. 1987. Rendering antialiased shadows with depth maps. Proceedings of the 14th annual conference on computer graphics and interactive techniques 283–291. 10.1145/37401.37435. https://doi.org/10.1145/37401.37435.] はもとの深度値ではなくシャドウテストの結果を再構築することがより一層の道理にかなっていることを発見した。彼のpercentage closer filtering (PCF)技術はシャドウマップにおいてポアソンディスクサンプリングパターンによる複数の深度比較の結果を平均化することで、シャドウマップの拡大magnificationに対する(より高次の)再構築を本質的に得る。結果のシャドウの滑らかさはフィルターカーネルの大きさに直接関連している。このカーネルはビュー空間のフラグメントごとに計算されなければならず、アルゴリズムのパフォーマンスをカーネルサイズに非常に敏感にすることに注意する。この手法のより高速なバリエーションは、現在のハードウェアのテクスチャーサンプラーで直接的にすでに実装されており、4つの近傍シャドウマップサンプルのシャドウマップテスト結果をバイリニア的にフィルタリングする(図23を参照)。

オーバーサンプリングによるエイリアシングは最終ピクセル位置でリサンプリングされる前に再構築された信号を帯域制限することによって画像処理において通常は回避される。テクスチャーマッピングでは、ミップマッピングのような事前フィルタリングアプローチが最も一般的である。しかし、これは、シャドウ関数が深度マップの線形変換ではないために帯域制限ステップをレンダリング前に行えないので、シャドウマップに対して行うことはより難しい。選択肢のひとつに、オンザフライのフィルタリングに頼って、大きなフィルターカーネルでPCFを計算することがあるが、これは低速であり、スケールしない。最近の研究は事前フィルタリングが適用できるようにするためにシャドウテストを線形関数に再定式化する賢い方法を提案した。

そのような再定式化のひとつがDonnellyとLauritzenによって導入されたvariance shadow maps [Donnelly and Lauritzen 2006Donnelly, W. and Lauritzen, A. 2006. Variance shadow maps. Proceedings of the 2006 symposium on interactive 3D graphics and games 161–165. 10.1145/1111411.1111440. https://pierremezieres.github.io/site-co-master/references/vsm_paper.pdf.; Lauritzen 2007Lauritzen, A. 2007. Summed-Area Variance Shadow Maps. GPU Gems 3. https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps.]である。彼らはカーネル窓の内部の深度値分布の平均と分散を用いることによって与えられたPCFカーネルに対する深度テストの成果outcomeを推定する。その利点は平均と分散が例えばミップマッピングを用いて事前計算できることにある。このアプローチの問題は深度分布における分散が大きい(深度の複雑さが大きい)とライトリークアーティファクトを引き起こす可能性があり(図24の左を参照)、十分な結果には高精度な(32ビット浮動小数点)テクスチャーフィルタリングハードウェアが必要とされることである。両方の問題への解法(layered variance shadow maps)は Lauritzen and McCool [2008Lauritzen, A. and McCool, M. 2008. Layered variance shadow maps. Proceedings of graphics interface 2008 139–146.] によって発表された。彼らは、シャドウマップの深度範囲を複数レイヤーに分割する。テクスチャー精度はこのアプローチによって減らすことができる(8ビットにまで)が、複数レイヤーが低分散のために依然として必要となる。

(図24:Variance Shadow Maps(左)は、Convolution Shadow Maps(右)と比べて、ライトリークに悩まされる。)

二値のシャドウテストを再定式化するもうひとつの方法はConvolution Shadow Mapsで Annen et al. [2007Annen, T., Mertens, T., Bekaert, P., Seidel, H.-P. and Kautz, J. 2007. Convolution shadow maps. Rendering techniques. 10.2312/EGWR/EGSR07/051-060. https://jankautz.com/publications/csmEGSR07.pdf.] によって導入された(図24の右を参照)。ここでは、統計的な推定の代わりに、フーリエ展開が深度テストを表現するのに用いられる。(無限に多い中から)16ヶの係数を用いる実践的な近似では、16ヶのサインおよび16ヶのコサインのテクスチャーが格納されなければならない。フーリエ基底への展開は線形な操作であり、個々の基底テクスチャーのミップマッピングを用いる事前フィルタリングが適用できる。基底テクスチャーが(標準のシャドウマップでの24ビットと比べて)テクセルあたり8ビットのみを必要とする一方で、メモリを考慮してフーリエ展開の項数を少なくする必要があり、リンギングアーティファクト(ギブズ現象Gibbs phenomenon)をもたらし、再び、結果としてライトリークとなる。

同様の一般的なアイデアに従い、 Annen et al. [2008Annen, T., Mertens, T., Seidel, H.-P., Flerackers, E. and Kautz, J. 2008. Exponential shadow maps. Proceedings of graphics interface 2008 155–161. https://jankautz.com/publications/esm_gi08.pdf.] は、フーリエ展開を指数に置き換えた、Exponential Shadow Mapsを提案した。そのアイデアはシャドウテストを階段関数step functionとして解釈し、この階段関数の分離可能な近似として指数を用いることにある。ここでは単一の32ビットテクスチャーチャネルで十分であり、このアプローチをさらにメモリフレンドリーにするが、より大きなカーネルサイズに対しては、この近似はもはや保たれず、アーティファクトを引き起こす。

より良い再構築は再構築アルゴリズムそれ自体を変更することによって達成することもできる。例えば、Shadow Silhouette Maps [Sen et al. 2003Sen, P., Cammarano, M. and Hanrahan, P. 2003. Shadow silhouette maps. ACM Trans. Graph. 22, 3, 521–526. 10.1145/882262.882301. https://graphics.stanford.edu/papers/silmap/silmap.pdf.; Sen 2004Sen, P. 2004. Silhouette maps for improved texture magnification. Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on graphics hardware 65–73. 10.1145/1058129.1058139. https://graphics.stanford.edu/papers/silmap_tex/silmap_tex.pdf.]はシャドウマップテクセルごとに輪郭上の点を追加で格納することによって線形なシャドウ境界を再構築することを可能にする。シャドウキャスターエッジの再構築では、近傍テクセルの輪郭点が計算される。1つ以上の輪郭がテクセル範囲と交差する場合にはアーティファクトが見えるようになるため、このアプローチはシャドウマップの解像度に依然として大いにheavily依存している。そのパフォーマンスはコストの高い輪郭点の決定によって主に制限される。

(図25:Deep Shadow Mapsはすべてのテクセルでの様々なサンプルから集められた透過率関数の区分線形表現を格納する(左)。これは髪のような挑戦的なケースのシャドウマッピングを可能にする(右)。)

非常に洗練されたオフラインフィルタリングアプローチにDeep Shadow Maps[Lokovic and Veach 2000Lokovic, T. and Veach, E. 2000. Deep shadow maps. Proceedings of the 27th annual conference on computer graphics and interactive techniques 385–392. 10.1145/344779.344958. https://graphics.pixar.com/library/DeepShadows/index.html.]がある。ここでは各テクセルは可視性関数の圧縮された区分線形表現、すなわち、テクセルの範囲上のサンプルで取られたnヶの区分線形透過率関数の重み付き平均を含んでいる。この表現は事前フィルタリングでき、髪や雲といった複雑なケースに対する高品質なシャドウを可能にする(図25を参照)。 Hadwiger et al. [2006Hadwiger, M., Kratz, A., Sigg, C. and Bühler, K. 2006. GPU-accelerated deep shadow maps for direct volume rendering. Proceedings of the 21st ACM SIGGRAPH/EUROGRAPHICS symposium on graphics hardware 49–52. 10.1145/1283900.1283908.] はGPU上のボリュームレイキャスティングのためのインタラクティブなバージョンを発表した。

7. おわりに(Conclusion)#

最後に、我々はどんな状況でどのアルゴリズムを使うべきかについてのいくつかの実践的なヒントを提供する。

その要件が、単一のシャドウマップが用いられる必要がある、すなわち、アルゴリズムが標準のシャドウマッピングと同等の速度で動作する必要がある、ということであるならば、Lloyd et al.による修正を含むLight Space Perspective Shadow Mappingが最適なアルゴリズムである。このアルゴリズムは多くの構成、特に、大まかに頭上からのライティングを伴う屋外のシナリオで素晴らしい品質を達成するだろうが、(フォーカスされた)Uniform Shadow Mappingの品質まで簡単に劣化し得る。Lloyd et al.による修正によって、Uniform Shadow Mappingの品質以下に劣化しなくなるだろう。

1つより多くのシャドウマップが許される、すなわち、いくらかのパフォーマンス損失が許容されるならば、最も良く知られている効率と品質のトレードオフはZ分割(CSM、PSSM)によって達成される。複数シャドウマップの分布は最適な対数シャドウマップの再パラメーター化の非常に粗い近似を真似する。さらに、各シャドウマップは視錐台の一部分へと最適に適合させることができ、それによって、視錐台の向きに依存せずに各空間次元spatial dimensionにおける品質を改善する。Z分割を再パラメーター化と組み合わせることは可能であるが、時間的エイリアシングがこのアプローチによって増加し、そのゲインはあまり大きくない。

前述のアルゴリズムの主要な利点のひとつはこれらがシーンに依存せず、シーンとの相互作用(例えば、読み戻し)を必要としないことである。その一方で、これはそれらのアプローチを遠近によるエイリアシングを扱うのみに制限するが、異なる表面の向きに起因する局所的なエイリアシング効果、すなわち、投影によるエイリアシングを引き起こすものは改善できない。高品質が望ましい場合には、適応的分割アルゴリズムを適用すべきである。将来的には、実際に結果としてピクセル単位で正確pixel-accurateな解法となる不規則サンプリングアプローチさえも現実世界のアプリケーションで実現可能になるかもしれない。静的な光源を持つ静的なシーンの特殊なケースでは、時間的再投影が高品質なシャドウをもたらす強力な手法である。

シャドウアクネと戦うには、背面レンダリングが最も高速な方法である。これはソリッドオブジェクトに対するほとんどのアクネをその背面に移動させる。ここでは、この範囲をさらに暗くするようにライトモデルを選んで残りのアーティファクトを目立たなくするか、追加のバイアスでこれらの範囲でもアクネを取り除くか、のいずれかを行う。しかし、これは薄いオブジェクトや非ソリッドオブジェクトに対して決して堅牢ではない。

小さなフィルターカーネルによるフィルタリングでは、(特にハードウェアでの)PCFは高速であり、再構築誤差のいくつかを取り除くことができる。より大きなフィルターカーネルでは、PCFは遅すぎる。現在、Layered Variance Shadow Mapsがこのケースでは最も高速かつ最も堅牢な解法である。