Skip to content
Go back

A survey of temporal antialiasing techniques

· Updated:

doi web paper

拙訳

Introduction

  • TAAとは複数フレームにまたがって集めたデータを使った空間的アンチエイリアシング技術のこと
    • リアルタイムレンダリング界隈ではほぼデファクトスタンダード
    • TAAは空間的AA技術なので、temporal antialiasingという名前はミスマッチ感がある
      • そもそものtemporal antialiasingは時間的エイリアシングの低減を目的とした技術のこと
  • 昔々、MSAAというものがありました
    • 流行りのdeferred shadingとは食い合わせが悪かった
      • SSAAと大差なかったり、帯域を大量に奪ったり
    • MSAAの代替として、ポストプロセッシングAAが色々と提案された
      • でも、時間的な安定性が問題になるものも多かった
  • TAAは前フレームからシェーディング結果を再投影することでサブピクセル情報を解決する
    • スーパーサンプリングとやっていることは大体同じ
    • 計算コストを複数フレームに分散することで、単一サンプルのシェーディング+αでスーパーサンプリングを行うことができる
    • エイリアシング除去性能も、時間的な安定性も、実装しやすさも向上している
    • 問題がない訳ではなく、画像がぼけたり、残像が起こったりghostingギラついたりshimmeringする

Algorithm overview

  • ピクセルごとに、3D空間上で同じ位置にある色を履歴バッファから取り出して、現フレームのjittering済みシェーディング結果に混ぜ合わせる
    1. シーンをレンダリングする
      • 前フレームからの移動量を表すためのモーションベクトルを用意する
      • jitteringを行うためにビューポートをずらして行う
    2. モーションベクトルを使って履歴バッファからサンプルを取り出す
      • 履歴バッファにはそれまでのサブピクセル情報が1ピクセルに詰まっている
    3. 履歴サンプルを使って良いものかどうか確認したり、使っても良いように修正したりする
      • 古すぎる、状況が変化しすぎている、などで現在のシェーディング結果にそぐわない場合、ghostingなどの悪影響が出たりする
      • これを行うのに現フレームのサンプルデータしか使えないので、色々大変で無理が出たりする
    4. 履歴と現サンプルを混ぜ合わせる
      • 固定または適応型の重みを用いて重み付き平均を取る
  • TAA的に行うアップスケーリングをtemporal upsamplingと呼んだりする
    • フレームごとに低解像度でレンダリングして、複数フレームを掛けて高解像度版を生成する

A brief history of Temporal Antialiasing

Accumulating temporal samples

  • 空間的アンチエイリアシングは、理論上では、サンプリング前に連続的な信号に対してローパスフィルタをかける
  • 実践上では、連続的な信号をスーパーサンプリングした後に離散的な信号のサンプルに対してローパスフィルタをかける
  • TAAは複数フレームにわたって空間的サンプルを生成・整列・累積することでスーパーサンプリングのコストを償却する

Jittering samples

  • 各フレームで異なるサンプルを生成するには、ビューポート上のサブピクセル単位のジッターオフセットviewport sub-pixel jitter offsetをカメラの射影行列に加える方法が一般的
    • ジッターオフセットにはwell-distributedなサンプル列を用いる
  • どの部分列を取ってもピクセル範囲内でそれなりに均等に分布する数列であることが理想的
  • programmable sample positionのtier 2が使えると、2x2ピクセルグリッドをまたいでサンプルパターンを指定できる
  • jitteringパターンを無作為化することで、パータン中の規則的なサイクルを崩すことができる
    • 短い回帰数列では、あるモーション速度が複数フレームからのサンプル位置をワールド空間上で集めてclusterしてしまう可能性がある
  • テクスチャフィルタリングとの組み合わせでブラーがかかりすぎないように、mipmapバイアスを適用したりする
    • temporal upsamplingでは特に重要[Unreal Engine 5.4 Documentation 20182018. Screen Percentage with Temporal Upscale. Unreal Engine 5.4 Documentation. https://dev.epicgames.com/documentation/en-us/unreal-engine/screen-percentage-with-temporal-upscale-in-unreal-engine?application_version=5.4.]
    • バイアスの値は実効サンプル密度と入力ピクセル密度の比で補正compensateする
      • 入力ピクセルあたりの実効サンプル数が4としたとき、ミップマップバイアスは12log24=1.0-\frac{1}{2} \log_2 4 = -1.0で計算される
      • 実際には、時間的安定性やテクスチャキャッシュ効率の問題があるので、この値から0の間の値を使ったりを時折している
  • TAAはサンプリングのintegrationを必要とするその他のエフェクトにも適用できる
    • AO、シャドウ、OIT、反射、ディフューズGI、など
    • 入力を無作為化すれば、スクリーン空間でアンチエイリアシングされたサンプルでできる
    • Unreal Engine 4は確率的サンプリングおよびディザリングを用いるエフェクトのデノイジングにTAAを使っている[Karis 2014Karis, B. 2014. High Quality Temporal Supersampling. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf.]

Data reprojection between frames

  • 前フレームでの位置を得る方法としてreverse projectionが広く使われる[Nehab et al. 2007Nehab, D., Sander, P. V., Lawrence, J., Tatarchuk, N. and Isidoro, J. R. 2007. Accelerating real-time shading with reverse reprojection caching. Proceedings of the 22nd ACM SIGGRAPH/EUROGRAPHICS symposium on graphics hardware 25–35. https://gfx.cs.princeton.edu/pubs/Nehab_2007_ARS/NehEtAl07.pdf.; 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.]
    • 前フレームのデータと現フレームのデータを使ってジオメトリを2回transformする
    • 得られた位置の差分はテクスチャに格納される(一部のエンジンでは”速度”とも言う)
  • 帯域を節約するため、動いている物体のモーションベクトルだけを計算するエンジンもある[Epic Games 20152015. The Unreal Engine 4 source code. https://www.unrealengine.com/en-US/ue-on-github.]
    • 影響するピクセルはステンシルバッファでタグ付けされる
    • タグ付けされなかったピクセルはTAAパスで前フレームでの位置を使って決まる
      • 深度バッファから再構築したNDC位置に、変換座標を適用して、前フレームでのNDC位置を求める
      • pn1=Mn1Mn1pnp_{n-1} = M_{n-1} M_n^{-1} p_n
  • distortion artifact (fractional offset snapping)が発生しないように、各ピクセルで履歴を取得するリサンプリング工程が必要になる
    • 再投影された座標がサブピクセルレベルのオフセットを含むので、ピクセルが1対1対応しなくなる
    • 一般には、バイリニアのテクスチャフェッチかバイキュービックのテクスチャフィルタリングを使う
  • モーションベクトルにもエイリアシング対策が必要になる
    • モーションベクトルの再投影を行うと、移動する物体の境界にアーティファクトが発生し得る
    • モーションベクトル自体にはアンチエイリアシングを適用できない
    • これの回避方法として、モーションベクトルをサンプリングするときに前面の物体を膨張させる[Karis 2014Karis, B. 2014. High Quality Temporal Supersampling. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf.]
      • 一般に、小さな4-tap dilation windowが使われる
    • 深度値のみを使う適応的スキームも提案されている[Wihlidal 2017Wihlidal, G. 2017. 4K Checkerboard in Battlefield 1 and Mass Effect Andromeda. Game Developers Conference. https://media.gdcvault.com/gdc2017/Presentations/Wihlidal_4kCheckerboardIn.pdf.]

Sample accumulation

  • 集められたサンプルは平均化されて単一の色として保持される
    • [Yang et al. 2009Yang, L., Nehab, D., Sander, P. V., Sitthi-amorn, P., Lawrence, J. and Hoppe, H. 2009. Amortized supersampling. ACM Trans. Graph. 28, 5, 1–12. 10.1145/1618452.1618481. https://hhoppe.com/supersample.pdf.]fn(p)=αsn(p)+(1α)fn1(π(p))f_n(p) = \alpha \cdot s_n(p) + (1 - \alpha) \cdot f_{n-1}(\pi(p))
      • ssはフレームnnのサンプル、π\piは再投影オペレータ
      • ブレンドファクタα\alphaは多くの実装では固定値を取る
  • ブレンドファクタを固定値とすると、実質的に、再帰的な指数関数的平滑化フィルタとして機能する[Nehab et al. 2007Nehab, D., Sander, P. V., Lawrence, J., Tatarchuk, N. and Isidoro, J. R. 2007. Accelerating real-time shading with reverse reprojection caching. Proceedings of the 22nd ACM SIGGRAPH/EUROGRAPHICS symposium on graphics hardware 25–35. https://gfx.cs.princeton.edu/pubs/Nehab_2007_ARS/NehEtAl07.pdf.; 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.; Yang et al. 2009Yang, L., Nehab, D., Sander, P. V., Sitthi-amorn, P., Lawrence, J. and Hoppe, H. 2009. Amortized supersampling. ACM Trans. Graph. 28, 5, 1–12. 10.1145/1618452.1618481. https://hhoppe.com/supersample.pdf.]
    • 古いサンプルの重みが徐々に小さくなっていく特性は、ある種、好ましい
    • 分散低減の観点で見れば、全サンプルが均等な重みで平均化されるときが最適[Yang et al. 2009Yang, L., Nehab, D., Sander, P. V., Sitthi-amorn, P., Lawrence, J. and Hoppe, H. 2009. Amortized supersampling. ACM Trans. Graph. 28, 5, 1–12. 10.1145/1618452.1618481. https://hhoppe.com/supersample.pdf.]
      • ただし、サンプル数が少なかったり多すぎたりするときに品質が悪くなるので、α\alphaが固定の場合には正しくない
      • α=0.1\alpha = 0.1で5フレーム分集めた結果はピクセルあたりのサンプル数が2.2個と等価
      • 10フレームでは、5.1サンプル相当
      • 15フレームでは、9.8サンプル相当
      • 定常状態では、ベストのときに19サンプル相当
  • サンプルの累積数を履歴バッファのアルファチャンネルに格納する手法[Yang et al. 2009Yang, L., Nehab, D., Sander, P. V., Sitthi-amorn, P., Lawrence, J. and Hoppe, H. 2009. Amortized supersampling. ACM Trans. Graph. 28, 5, 1–12. 10.1145/1618452.1618481. https://hhoppe.com/supersample.pdf.]
  • α\alphaが小さすぎるとリサンプリングエラーやtemporal lagの影響を受けやすくなるため、α\alphaの下限をクランプする

Sample accumulation in HDR color space

  • HDR空間でTAAを適用するためのワークアラウンド
    • ポストエフェクトはHDR空間で行う必要があるのに、アンチエイリアシングはトーンマッピング後のほうが適している
    • 仕方ないので、トーンマップしてからTAAを行い、逆トーンマップしてHDR空間に戻す[Pettineo 2015Pettineo, M. 2015. Rendering the Alternate History of The Order: 1886. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2015/rad_siggraph_advances_2015.pptx.]
      • 実践では、Reinhard operator 1/(1+x)1 / (1+x)のような可逆なトーンマッピングで実装される
  • トーンマッピング時の不飽和化を回避するために輝度に適応した重みを用いる手法[Karis 2013Karis, B. 2013. Tone mapping. Graphic Rants. https://graphicrants.blogspot.com/2013/12/tone-mapping.html.; Karis 2014Karis, B. 2014. High Quality Temporal Supersampling. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf.]
    • 新しいサンプルを履歴に混ぜ込むときにbilateral weightとして使う:w(c)=11+L(c)w(c) = \frac{1}{1+L(c)}
      • LLは色ccの輝度成分
    • これにより、トーンマップしつつ、明るすぎるピクセルを抑えてくれる
    • 似たような技術がブルームの安定化のためにCall of Duty: Advanced Warfaceで実装されている[Jimenez 2014Jimenez, J. 2014. Next Generation Post Processing in Call of Duty: Advanced Warfare. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2014/sledgehammer/Next-Generation-Post-Processing-in-Call-of-Duty-Advanced-Warfare-v17.pptx.]

Validating history data

  • 履歴データをそのまま再利用するのはやめたほうが良い
    • 遮蔽状況が変化したり、照明や陰影が変化したりして、履歴データが無効になる
    • エラーを適切に扱わないと、ghostingなどの時間的アーティファクトが発生する

History rejection

  • エラーを見つけたデータを破棄することで無効データを取り扱う
    • α=1\alpha = 1にしてエラーの影響を取り除く
    • 累積する履歴の更新を早めるために、α\alphaに下限を設けることもあり得る
    • 破棄するかどうかの判断にはジオメトリデータや色データが使える
  • ジオメトリデータを用いる方法
    • 遮蔽状況が変化したりして一致しない表面から再投影した履歴データを見つけるのに使われる
    • 新たに映り始めたピクセルを見つけて履歴を破棄する手法[Nehab et al. 2007Nehab, D., Sander, P. V., Lawrence, J., Tatarchuk, N. and Isidoro, J. R. 2007. Accelerating real-time shading with reverse reprojection caching. Proceedings of the 22nd ACM SIGGRAPH/EUROGRAPHICS symposium on graphics hardware 25–35. https://gfx.cs.princeton.edu/pubs/Nehab_2007_ARS/NehEtAl07.pdf.]
      • 再投影した深度値と前フレームの深度との差が大きすぎるとき、遮蔽物が避けて背後の物体が映り始めたと解釈する
    • Crysis 2 [Sousa 2011Sousa, T. 2011. Anti-Aliasing Methods in CryENGINE 3. Filtering Approaches for Real-time Anti-aliasing course. ACM SIGGRAPH. https://www.iryoku.com/aacourse/downloads/13-Anti-Aliasing-Methods-in-CryENGINE-3.pdf.]
      • モーション速度が上がるにつれてα\alphaを増やす+深度ベースの一貫性チェック
    • ジオメトリデータだけだとシェーディングの変化を識別できないので、結果が微妙になることもある
  • 履歴データとサンプルデータを直接比較する方法
    • 照明・陰影が変化したり、リサンプリングエラーや不正確なモーションベクトルによって変になったりしたものを見つけるのに使われる
    • 現フレームのサンプルはエイリアシングしているはずなので、この比較はバイアスされたエラー推定量biased estimates of the errorを求めることになる[Yang et al. 2009Yang, L., Nehab, D., Sander, P. V., Sitthi-amorn, P., Lawrence, J. and Hoppe, H. 2009. Amortized supersampling. ACM Trans. Graph. 28, 5, 1–12. 10.1145/1618452.1618481. https://hhoppe.com/supersample.pdf.]
      • つまり、この値が空間的にも時間的にも不安定となることを意味する
      • エラー推定量のフィルタリング:εn(p)=B3(fn1sn)(p)\varepsilon_n (p) = B_3 \ast (f_{n-1} - s_n)(p)
        • B3B_3は半径3のボックスフィルタ
      • この推定量は履歴のrefreshの最低量を強制するためにα\alphaの下限を設定するのに使う
    • 再構築した色の時間的勾配に、安定性向上のための時空間的平滑化を適用する手法[Herzog et al. 2010Herzog, R., Eisemann, E., Myszkowski, K. and Seidel, H.-P. 2010. Spatio-temporal upsampling on the GPU. Proceedings of the 2010 ACM SIGGRAPH symposium on interactive 3D graphics and games 91–98. 10.1145/1730804.1730819. https://people.mpi-inf.mpg.de/alumni/d4/2016/rherzog/Papers/spatioTemporalUpsampling_preprintI3D2010.pdf.]
    • 現フレームのサンプルで近傍の色の範囲extent(バウンディングボックス)を計算する手法[Malan 2012Malan, H. 2012. Real-Time Global Illumination and Reflections in Dust 514. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2012/CCP/Malan-Dust_514_GI_reflections(Siggraph2012).pptx.]
      • このバウンディングボックスの近くまたは内部にあれば、履歴をそのままにする
      • 加えて、バウンディングボックスの範囲に応じてα\alphaをバイアスする
        • バウンディングボックスが小さければ、ghostingを回避するためにα\alphaを増やす
        • バウンディングボックスが大きければ、累積されるサンプルを増やし、時間的アーティファクトを低減するためにα\alphaを減らす
  • Killzone: Shadow Fall[Valient 2014Valient, M. 2014. Taking Killzone Shadow Fall Image Quality into the Next Generation. Game Developers Conference. https://www.guerrilla-games.com/media/News/Files/GDC2014_Valient_Killzone_Graphics.pdf.]、HRAA[Drobot 2014Drobot, M. 2014. Hybrid reconstruction anti-aliasing. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2014/drobot/HRAA_notes_final.pdf.]
    • フレーム間で厳密に同じ表面位置でシェーディングを行っている生のサンプル同士を比較して、時間的な変化を検出する
    • (時間的FLIPQUADのような)2つ前のフレームとサンプル位置がおなじになるような、偶奇フレームのサンプルパターンを用いる
  • レイトレーシング用[Schied et al. 2018Schied, C., Peters, C. and Dachsbacher, C. 2018. Gradient estimation for real-time adaptive temporal filtering. Proc. ACM Comput. Graph. Interact. Tech. 1, 2. 10.1145/3233301. https://cg.ivd.kit.edu/publications/2018/adaptive_temporal_filtering/adaptive_temporal_filtering.pdf.]
    • 前のシェーディングサンプルのsubsetを現フレームにforward-projectして、厳密に同じ位置で新しいサンプルをシェーディングすることで、シェーディング変化(時間的勾配)を確実に計算する
    • 疎に計算された勾配はjoint-bilateral filterでアップスケーリングされ、履歴が常に最新になるようにα\alphaを制御するのに使われる

History rectification

  • History rectificationは無効なデータを新しいサンプルと矛盾のないように修正する
    • 無効なデータをリジェクトすると、integrationが実質的にリセットされて、テンポラルアーティファクトを引き起こす
    • こんにちのTAA実装では、ビジュアル的に許容される結果になるように、修正した履歴を現フレームにブレンドする
  • 近傍サンプルから色の範囲(凸包)を計算して、その外側にある履歴をクリップすることで修正を行う
    • 現フレームのサンプルによって、各ピクセルに含まれる色の範囲が正確に得られると仮定する
    • 近傍サンプルがより多ければ、局所的な色変化の分布の推定量がよりうまく求まると仮定して、色情報を抽出するのに各ピクセルの3x3以上の近傍を考える
    • 色空間における近傍サンプルの凸包は中心ピクセルの周辺で期待される色の範囲を表している
      • 履歴の色が凸包の内側にある場合、現フレームのデータと矛盾がないとみなし、安全に再利用できる
      • 履歴の色が凸包の外側にある場合、現フレームのデータと矛盾がなくなるように修正する必要がある
        • 履歴の色とサンプルの色を線でつないで、その線分を凸包でクリップすることで行う
  • min/maxフィルタを用いて色のAABBを計算して、そのAABBで履歴をクリップやクランプする近似手法[Lottes 2011Lottes, T. 2011. TSSAA (Temporal Super-Sampling AA). Timothy Lottes. https://web.archive.org/web/20120120082628/http://timothylottes.blogspot.com/2011_04_01_archive.html.; Karis 2014Karis, B. 2014. High Quality Temporal Supersampling. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf.]
    • 実践では、凸包の計算や光線と凸包の交差はめちゃくちゃ重いので、近似的に行う
    • AABBは計算しやすい反面、時間的な安定性とghosting発生をトレードオフする
    • RGBの代わりにYCoCg空間でクリッピングを行う[Karis 2014Karis, B. 2014. High Quality Temporal Supersampling. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf.]
      • YCoCgの方がタイトなAABBを作りやすくなるので、ghostingが抑えられる
  • 外れ値に対処するためのvariance clipping[Salvi 2016Salvi, M. 2016. An Excursion in Temporal Supersampling. Game Developers Conference. https://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf.]
    • 極端に暗かったり明るかったりするとバウンディングボックスが大きくなりすぎて、修正されるべき履歴も受け入れてしまうことが起こり得る
    • 局所的な近傍の色の平均と標準偏差を用いて色範囲を決定する
      • Cmin=μγσC_{min} = \mu - \gamma \sigma
      • Cmax=μ+γσC_{max} = \mu + \gamma \sigma
        • γ\gammaは0.75から1.25の間から選ばれる
    • pixel history linear models[Iglesias-Guitian et al. 2016Iglesias-Guitian, J. A., Moon, B., Koniaris, C., Smolikowski, E. and Mitchell, K. 2016. Pixel history linear models for real-time temporal filtering. Computer Graphics Forum 35, 7, 363–372. 10.1111/cgf.13033. https://studios.disneyresearch.com/wp-content/uploads/2019/03/Pixel-History-Linear-Models-for-Real-Time-Temporal-Filtering-1.pdf.]
      • 特徴(ピクセルごとに累積した安定的な低周波の色情報)を線形モデルに通してピクセルの色に変換する
      • 近傍クランプも使って、色予測モデルをrefineする
      • 全体としては、追加のストレージを使って時間的一貫性と応答性の優れたバランスを求めることを目的にしている

Temporal upsampling

  • 実質的なサンプリングレートをピクセル毎1サンプル以下に減らす、TAAを拡張したもの
  • 低解像度のシェーディング結果を累積して、純粋な空間的アップサンプリングより細かくなり得る高解像度画像を生成する
  • 基本構成はTAAとだいたい同じだけど、accumulation stepは特別なものを使う

Scaling-aware sample accumulation

  • まず入力サンプルを出力解像度にアップスケールする
    • sˉn(p)=1w(p)iΩ(p)δ(oi)si\bar{s}_n(p) = \frac{1}{w(p)} \sum_{i \in \Omega(p)} \delta(o_i) s_i
    • 実質的には、この式で、対象ピクセルの再構築カーネルδ\deltaに該当する入力サンプルの重み付き総和を計算する
  • アップスケールした入力サンプルsˉn(p)\bar{s}_n(p)をそのまま使うと、クッキリした出力画像を生成してくれない
    • 入力サンプルとの近さによって、出力サンプルの品質が様々になってしまうため
    • フレーム毎のjitteringパターンを用いると、数フレームごとに高品質サンプルがピクセルに入る
  • 入力サンプルを履歴へ選択的にブレンドするための品質信頼度confidence-of-quality factorβ(p)\beta(p)を導入する

Miscellaneous improvements

Checkerboard rendering

Challenges

Blurriness

  • 結果がぼやける原因は主に2つ:リサンプリングによる誤差、履歴修正による誤差
Resampling blur
  • 再投影先が小数点以下を含むと、履歴を取り出すにはリサンプリングが必要になる
    • バイリニア・テクスチャフィルタリングを使うと、再投影先のピクセル中心の4近傍を補間することになる
      • 高周波要素があまり残らないので、ぼやけた画像になる
    • このフィルタリング誤差が累積して、わかりやすいボケボケの見た目が現れる
    • このブラーは統計解析を用いて定量化できる[Yang et al. 2009Yang, L., Nehab, D., Sander, P. V., Sitthi-amorn, P., Lawrence, J. and Hoppe, H. 2009. Amortized supersampling. ACM Trans. Graph. 28, 5, 1–12. 10.1145/1618452.1618481. https://hhoppe.com/supersample.pdf.]
      • この解析によって、モーション速度に基づくα\alphaの下限のクランプや高解像度の履歴バッファによって過度なブラーを回避するという戦略が導かれる
    • レイトレーシング[Corso et al. 2017Corso, A. D., Salvi, M., Kolb, C., Frisvad, J. R., Lefohn, A. and Luebke, D. 2017. Interactive stable ray tracing. Proceedings of high performance graphics. 10.1145/3105762.3105769. https://luebke.us/publications/stable_rt_final.pdf.]などのregular sampled outputsの必要ないものでリサンプリングを回避するには、明示的なhole filling stepsとともにforward reprojectionが使える
  • 高度なリサンプリングフィルタが再投影によるブラーを抑えるのに一般に使われたりもする
History rectification-induced blur
  • ピクセルデータが欠けてしまった場合、過剰に小さくなった色範囲で履歴が修正されてしまう
    • history rectificationは各ピクセルの近傍サンプルに表面色の色域すべてが含まれていると仮定するが、詳細な要素を持つ場合にはしばしば満たされない
    • フレームのサンプルは疎らなので、詳細な特徴を扱うには3x3近傍のいずれかにそれが含まれていて欲しいけれども
  • ghostingなどのアーティファクトの対処を優先して、ディテールの保持を犠牲にすることがままある

Ghosting and temporal lag

  • ghostingはスクリーン空間で時間的にデータを再利用する技術で見られるアーティファクトの一般的な形
    • 新たに映り始めた領域で、無効な履歴が現フレームから完全に取り除かれなかったときに起こる
    • または、モーションベクトルが正しくないときに無効な履歴を引っ張ってきてしまうときに起こる
      • 半透明やパーティクル、反射などで発生する
    • モーションがなく、シェーディングが高速に変化して履歴が古くなるときに、ボケたり混ざった見た目になることを、temporal lagと呼ぶ
  • 高コントラストの境界では色範囲が大きくなりすぎて履歴が適切に処理されなくなる
    • ghostingやtemporal lagはhistory rectificationが上手く機能していれば回避できる
    • コントラストの高い物体の境界近くではあまりうまく行かない
      • ピクセルの色域を表現するのに向かない大きなバウンディングボックスが求まる
      • すると、本来無効であるべき履歴が素通りしてしまう
  • ghostingアーティファクトの回避手法
    • Unreal Engine 4の”responsive AA”フラグ[Karis 2014Karis, B. 2014. High Quality Temporal Supersampling. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf.]
      • フラグを付けた半透明マテリアルでステンシルバッファに書き込む
      • フラグを立てたところでは、α\alphaを増やして履歴が素早く吐き出されるようにする
    • Uncharted 4[Xu 2016Xu, K. 2016. Temporal Antialiasing in Uncharted 4. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2016/s16_Ke.pptx.]
      • ghostingを起こしやすいマテリアルをmask outする
      • なめらかでアンチエイリアスされたエッジでのghosting trailを回避するために膨張したステンシルマスクを使う
    • rejectionとrectificationを組み合わせる[Jimenez 2016Jimenez, J. 2016. Filmic SMAA: Sharp morphological and temporal antialiasing. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. http://www.klayge.org/material/4_11/Filmic%20SMAA%20v7.pdf.]
      • 深度比較に失敗した履歴を強制的に吐き出す
    • INSIDE[Fuglsang Pedersen 2016Fuglsang Pedersen, L. J. 2016. Temporal Reprojection Anti-Aliasing in INSIDE. Game Developers Conference. https://gdcvault.com/play/1022970/Temporal-Reprojection-Anti-Aliasing-in.]
      • モーション速度が増えるにつれて、TAA出力をmotion-blurred pixelsに遷移させる
  • 反射での再投影の間違いを修正する方法

Temporal instability

  • jitteringが引き起こす色の変化が誤って無効化されたりクランプされたりすることもある
    • TAAは時間的な不安定性temporal instabilityを低減させることが主目的のひとつ
    • カメラが静止しているときでもビューポートをjitteringするので、シェーディングは常に変化する
    • 通常は、履歴の累積によってこれらの変化は吸収されるが、rejectionやrectificationがそれを阻害する場合がある
    • 結果として、累積が無効化されるような状態になり、モアレなどが発生する
    • rectificationを緩めたりすれば回避できるが、そうすると今度はghostingやtemporal lagが起こりやすくなる
  • 入力が無効な履歴を見つけるのに十分な情報を持っていない場合に問題が起こる
    • 有効な履歴が無効であるとされてしまうと、ブラーやtemporal instabilityが発生する
    • 無効な履歴が有効であるとされてしまうと、ghostingやtemporal lagが発生する
    • temporal upsamplingだと、入力が通常のTAAよりガッツリめにundersampledされるので、このアーティファクトが目立ちがち
    • 別のサンプルパターン[Drobot 2014Drobot, M. 2014. Hybrid reconstruction anti-aliasing. Advances in Real-Time Rendering in Games course. ACM SIGGRAPH. https://advances.realtimerendering.com/s2014/drobot/HRAA_notes_final.pdf.]やselective reshading[Schied et al. 2018Schied, C., Peters, C. and Dachsbacher, C. 2018. Gradient estimation for real-time adaptive temporal filtering. Proc. ACM Comput. Graph. Interact. Tech. 1, 2. 10.1145/3233301. https://cg.ivd.kit.edu/publications/2018/adaptive_temporal_filtering/adaptive_temporal_filtering.pdf.]を使ったりして軽減できるけど、これらは主流のTAA技術との互換性がない
  • 特定のシナリオ下でtemporal instabilityを低減し得るヒューリスティックなアルゴリズムがある

Undersampling artifacts

Performance

  • TAAはコンピュートシェーダかフルスクリーンのピクセルシェーダで実装されるのが普通
    • 画像空間の技術なので、解像度に比例したコストがかかり、基本的に安定で、シーンに依存しない
    • 対して、MSAAのコストはジオメトリの密度や深度の複雑さ、マルチサンプル数、ハードウェア実装の特性によって変化する
      • そう考えると、ローエンドではMSAAの方が安価になることもある
  • temporal upsamplingはパフォーマンス上のオーバーヘッドを発生させることがある
  • TAAを活用または拡張する技術

Variable rate shading

  • TAAの時空間フィルタを使うことで、VRSで一律に塗られたピクセルの詳細を再構築する
  • 外縁部でcoarse pixel shadingを行うでfoveated renderingを高速化する[Patney et al. 2016Patney, A., Salvi, M., Kim, J., Kaplanyan, A., Wyman, C., Benty, N., Luebke, D. and Lefohn, A. 2016. Towards foveated rendering for gaze-tracked virtual reality. ACM Trans. Graph. 35, 6. 10.1145/2980179.2980246. https://cwyman.org/papers/siga16_gazeTrackedFoveatedRendering.pdf.]
    • variance clippingでアンダーサンプリングによるアーティファクトに対処する
  • TAAをcoarse pixel shadingに適応させる[Xiao et al. 2018Xiao, K., Liktor, G. and Vaidyanathan, K. 2018. Coarse pixel shading with temporal supersampling. Proceedings of the ACM SIGGRAPH symposium on interactive 3D graphics and games. 10.1145/3190834.3190850. https://www.intel.com/content/www/us/en/developer/articles/technical/coarse-pixel-shading-with-temporal-supersampling.html.]
    • ブルーノイズの特性をもつvisibilityおよびshadingサンプルの分布を生成するjittering sequenceを採用する
    • エッジ周辺で色の分散を適応的にrescalingすることで、variance clippingで発生するghostingを減らす
      • エッジ周辺では表面が重なってたくさんのシェーディングサンプルができる

Temporal denising

Machine learning-based methods

Conclusion and future work

(省略)

Acknowledgement

(省略)