前言

SSAA(Supersampling Anti-Aliasing)是通過加大分辨率,使取樣率提高的一種反鋸齒技術。以4xSSAA為例,屏幕像素被放大4倍進行取樣。

所有着色完成後,計算4個像素的平均值,賦值給原像素。

pn=i=04Pi4p_{n} = \frac{\sum_{i=0}^4 P_{i}}{4}

鋸齒

因為像素的取樣率不足,所以導致不不能完整地描述三角形。

通過增大分辦率(軟件的形式),提高像素的取樣率,能更好地描述三角形。

實際的顯示中,因為邊緣被模糊了,所以鋸齒感會降低。

着色

這裏簡單地說明一下着色的含義。像素的着色包含了渲染(光照、陰影…)、深度測試、模板測試等等的操作。通過一系列的計算後,最終得到像素的顏色值。

SSAA的取樣方式

原始的取樣是針對一個像素的,如下圖。
origin

SSAA是逐像素計算的,每一個像素都需要執行着色運算(與MSAA不同之處)。當着色結束後,求4個像素的平均值,賦給原像素。下圖中的結果為

pixel=2green4pixel = \frac{2green}{4}

a triangle

因為着色時會進行深度測試(depth testing),存在多個三角形時,會根據深度值進行屏蔽。下圖中的結果為

pixel=2yellow+1green4pixel = \frac {2yellow + 1green}{4}

more triangle

引發的問題

  1. 4倍的存儲空間(渲染貼圖&深度貼圖)
  2. 4倍的着色計算

前書き

SSAA(Supersampling Anti-Aliasing)とは解像度を増加し、サンプリング周波数を増大するアンチエイリアス技術である。4xSSAAを例とし、解像度を4倍増加して、サンプリングを行う。

シェーディングが終わと、元ピクセルの値は4つのピクセルの平均である。

pn=i=04Pi4p_{n} = \frac{\sum_{i=0}^4 P_{i}}{4}

アンチエイリアス

サンプリング周波数が足りないため、三角形を完璧に表現できない。

解像度を増加することにより(ソフトウェア側)、サンプリング周波数を上げって、三角形の表現がよくできる。

シェーディングとは

シェーディングを簡単に説明する。ピクセルのシェーディングとはレンダリング(GI、Shadow…)、深度テストなどを行い、ピクセルの色が得られる。

SSAAのサンプリング

原画像のサンプリングでは、次の図のように1か所しかシェーディングできない。

SSAAはper pixelで、ピクセルごとにシェーディングを行う(MSAAと違うところ)。シェーディングが終わると、4つのピクセルの平均値を元ピクセルの値にする。下図の結果は

pixel=2green4pixel = \frac {2green}{4}

a triangle

シェーディングする時、深度テストを行うため、複数の三角形が存在する場合としても、正しい結果が出る。下図の結果は

pixel=2yellow+1green4pixel = \frac {2yellow + 1green}{4}

more triangle

問題点

  1. 4倍のストレージ(RenderTarget Texture & Depth Texture)
  2. 4倍の計算時間

References

Introduction of Multisampling(MSAA)