Open4
AA・アンチエイリアシング【FXAA, MSAA, SMAA, TAA】(知見倉庫)
AA・アンチエイリアシングに関する知見スレです。
【Unity】MSAA
- MSAA(Multi-Sampling Anti-Aliasing)
- 割と古典的な技術
- モバイルGPUレンダリング(Tile-based rendering)との相性が良い
- Differed Renderingには非対応
- 周辺サンプリングが必要になるため、サンプリング負荷が高い、かつFrameBufferを消費する(x4の場合単純に画面解像度テクスチャ4枚分)
- アルファクリップによるポリゴン描画をおこなう場合、ポリゴンの輪郭部分にはAAが乗らないため、工夫が必要(UnityではAlpha-to-coverageを使用して、アルファを考慮したMSAAをおこなっている)
- 上記はCore-RenderPipeline packageの中のSharpenAlphaシェーダ関数を参照
ここでもDefferedでSMAAは非効率という話が挙げられている
なぜDefferedでSMAAは非効率?
- G-BufferをすべてSMAAに対応する必要がある
- ライティングはサブピクセル単位(ディスプレイ上の1つの画素(ピクセル)を構成しているRGBの単色の各点のこと)でおこなわなければならない
- ライティング後のカラーに対して処理が必要
- SSAA(周辺4ピクセルの平均をとるAA手法)と変わらない
DefferedではFXAA、MLAA、TAAを採用することが多い
サブピクセルを利用するAA
->MSAA、TAA
サブピクセルを利用すると、細いジオメトリが千切れてしまう問題が軽減する
LIGHT11さんのSSAA、MSAA、FXAA、TAA簡易まとめ