Skip to content
Go back

拙訳「SRAA: Subpixel Reconstruction Anti-Aliasing」

· Updated:

[McGuire et al. 2011McGuire, M., Chajdas, M. G., Puchin, S., Sainz, M. and Luebke, D. 2011. SRAA: Subpixel Reconstruction Anti-Aliasing. Filtering Approaches for Real-time Anti-aliasing course. ACM SIGGRAPH. https://www.iryoku.com/aacourse/downloads/07-SRAA-Subpixel-Reconstruction-Anti-Aliasing.pdf.]

url

SRAAの結果(SRAA result)#

1ピクセル単位で特徴を持つ2つのエリアを拡大する。

SRAAがMSAAに匹敵するアンチエイリアシングを生み出すことを確認できる。それなのに、ピクセル中に複数のオブジェクトがあっても、ピクセルあたり1回より多く陰影付けしていない。

SRAAは4xMSAAの深度を追跡し、4つの深度サンプルそれぞれで独立して陰影を見つけるために近くのピクセルを調べて、シェーディングと色がアンチエイリアシングに対して薄いオブジェクトに沿って流れ出ることが可能になる。1サンプルのみを覆うほどに小さいオブジェクトがある場合は正常に動作しないが、ワイヤーのような個別の薄いオブジェクトや瓦礫のような単一サンプルのオブジェクトの収集物に対して正常に動作する。

SRAA#

  • SRAAは 1sppのモーフォロジカルアプローチが失敗するケースを対象とする 研究である
  • エッジに対する他の手法を組み合わせる。
  • I3D2011の論文以来のパフォーマンスとクオリティの改善(NVIDIAの技術報告がそのうち出る)

1サンプル毎ピクセルの入力(1 sample-per-pixel input)#

1080pで1sppでレンダリングしたDICEによるシーンがある。これはポストプロセッシングアンチエイリアシングアルゴリズムに提供する入力である。

このシーンでSRAAがどう処理するかを示すために、3つのエリアで拡大しよう。

エッジ(Edges)#

このバルコニーは大きなポリゴンの間のハイコントラストなエッジによって占められる。

SRAAは調整なしのこの入力でのMSAAに匹敵する結果を生成するが、我々はモーフォロジカルな手法がMSAAのクオリティを上回る可能性があることを見てきた。これは優れた結果のためにサブピクセルがFXAAのような何かと組み合わさる場合である。

モーフォロジカルな手法が失敗する、薄いオブジェクトのケースを見ていこう。

サブピクセル特徴(Subpixel Features)#

どうなっているのかを示すために、より制御された実験がある。

このベクタシーンを構築し、1sspと数千sspでラスタライズする。

高周波の保存

エイリアシングでギザギザにならないシャープなエッジの保存

線の厚さの保存

SRAAの属性(SRAA Attributes)#

  • 例えば以下に対して、1x色からサブピクセル精度を再構築する。
    • ポリゴンのエッジ
    • 遠くのキャラクター
    • 送電線
    • CADのワイヤーフレーム
    • フェンス
    • アンテナ
  • GeForce 560上の1080pで約1ms
  • MSAA深度バッファを必須とする。
  • 任意のMSAA法線/UV/IDバッファを認める。
  • 代替: テンポラル、または、サブピクセルモーフォロジカル(SMAA)

テンポラルAAはCrysis 2やHalo Reachで効率的に用いられた。

重要なアイデア(The Key Idea)#

実装メモ(Implementation Notes)#

  • 他の手法と組み合わせる。
    • SRAAの前に1x色でFXAAを実装する。(今日は示さない)
    • ビルボードに対するアルファブレンディングを維持する。
    • 線や選別したポリゴンでのプリミティブアンチエイリアシング
    • SSAA、MSAA、CSAAと両立できる
  • スーパーサンプルされた深度は”タダ”である。
    • 深度のみの4xMSAAは1xフラットシェーディングと比べても3倍速い。
    • 深度の読み/書きは多くのアーキテクチャで圧縮されている。
    • 以前としてメモリコストを支払わなけばならない。
  • エッジでないピクセルを”破棄”またはステンシルマスクする。

空間とクオリティ(Space and quality)#

入力(AAなし)D16FD16F+RGB8の法線R8のプリミティブID
16.6MB49.8MB8.2MB

: GeForce 560 Ti、1980x1080で、すべては約0.55msで動作する。

深度のみはレンダリングするのに効率が良いが、1080pでは、4xは、サンプルあたり16ビットでさえ、もとのフレームバッファの上に16.6MBの追加コストがかかる。

すべてのケースを区別することもできない。

法線のような追加情報はより良いクロスバイラテラル重みを生み出すが、膨大な空間を必要とする。

テッセレーションプリミティブIDが多くのシーンでアンチエイリアシング目的に十分であるのと同じくらい単純なヒューリスティックであり、8ビットに圧縮できることを発見した。

R8のプリミティプIDバッファ(R8 Primitive ID Buffer)#

プリミティブIDバッファがどう見えるかを示す。

おわりに(Conclusion)#

  • 大きなトライアングルのエッジのアンチエイリアシングには 現時点ではFXAAを使っている
  • 少量のMSAA データはサブピクセルアンチエイリアシングを改善する可能性がある。
    • FXAA + SRAA, SMAA
  • プリミティブIDは効果的 であり、AAに対するコンパクトなヒューリスティック識別器である。