Carved Marker

FSAA 簡介 [Part 1]

FSAAfull scene anti-alias 的縮寫,有些人將其譯為全景反鋸齒,還算是合理。不過,倒底 FSAA 是什麼呢?為什麼要「全景」(full scene)?「半景」不行嗎?(其實相對於 FSAA 的是 edge AA,「邊緣反鋸齒」)反鋸齒(anti-alias)又是怎麼回事呢?

要弄清楚什麼是 FSAA,就得先從 AA(anti-alias)開始。要弄清楚 AA,只好說明一下取樣(sampling)這個麻煩的東西了。對於電腦繪圖有些瞭解的讀者,應該已經知道,目前的電腦繪圖使用的是 2D raster 的顯示方式。也就是說,畫面是由一大堆有不同顏色和不同亮度的小點,組成一個大的方陣。這些小點稱為像點,即 pixel,pixel 是 picture element 的縮寫。很明顯的,像點的數目愈多,圖形就會愈細緻。我們常說的解析度就是指這些像點的數目。例如,640×480 這個解析度,就表示畫面是由 307,200 個像點所組成的。

註:解析度在某些領域有不同的意義。在印刷的情形下,一般所謂的解析度,通常是以 DPI(dots per inch)為單位,即每英吋中含多少個點。像是某個印表機,若有 600 DPI 的解析度,就表示它每英吋可以包含 600 個點。所以,在一張 8.5"×11" 的紙上,就會有 5,100×6,600 = 33,660,000 個點。當然,紙愈大的話,點的數目就可以愈多,這是因為點的大小是固定的。在顯示幕的情形下,不管螢幕有多大,使用 640×480 這個解析度時,像點的數目都是 307,200 個,這和印刷的情形是不同的。當然,通常愈大的螢幕能容許愈高的像點數目。

當然,像點的數目是有限多的。不幸的是,這個世界並不是由有限的小點組成的。好吧!也許它是由有限的小點組成,但是這些小點的數目非常的多,所以以人類巨大的眼睛來看,就好像是完全連續的一樣。這樣一來,用有限的像點來表現畫面,就會出現問題。但是,只要像點的數目夠多,而且像點的大小夠小,小到人類的眼睛無法分辨的情形下,不就沒問題了嗎?當然會有問題,不然就不需要 FSAA 了。

問題在哪裡呢?問題在於取樣的方式。取樣是指把一個連續的訊號,轉換成不連續(離散)的訊號的動作。因為像點的數目是有限多的,所以它一定是不連續的,所以當然就需要這個取樣的動作了。下圖是一個取樣的例子:

Sampling figure

上圖中,黑色的曲線是原始訊號,灰色是直線是取樣點,下圖則是取樣的結果。簡單的說,就是把曲線上面每個取樣點(就是那些灰色直線所在的地方)的數值取出來,這樣就是取樣的動作。一般來說,取樣點之間的距離是固定的。以電腦圖形的例子來看,每個像點就是取樣點。不過,電腦圖形是從一個二維的訊號中,取樣得到一個二維的陣列。所以,取樣看起來是會損失資訊的。另外,因為電腦是以數位的方式存放資料,所以還要把取樣的結果進行數位化。數位化可以看成是「轉成整數」的動作。例如,假設訊號的範圍是 0 ~ 1 之間,想要數位化成 8 位元的資料,就是先把它乘上 255(8 位元數字可以表示 0 ~ 255 的範圍),然後把結果以四捨五入或是直接捨去的方式轉成整數。這個動作當然也會損失資訊。不過,這部分和我們的主題無關。

取樣會牽扯到很多複雜的定理。例如,在做取樣之前,如果先經過一個 low pass filter,把高頻的部分濾掉,再設定適當的取樣頻率(通常是比是最高頻率的兩倍還大)。這樣處理過的訊號再去取樣,就可以完整還原到原來的訊號(指經過 low pass filter 後的訊號,而不是最原始的訊號)。當然,這篇文章並不是什麼教材,所以不會深入這些地方。不過,low pass filter 等一下會用到,所以先記著比較好。

[Part 1] [Part 2] [Part 3] [Part 4]

1/18/2001, Ping-Che Chen


Sorry, Traditional Chinese only. This page is encoded in UTF-8.

Copyright© 2000, 2001 Ping-Che Chen