冷魚魚
2 months ago
回去翻自己在 SO 上問過的問題有些真的太羞恥了
我竟然問過 anti-aliasing 和 blur 有什麼不同...
而且問這個問題時我竟然已經大學畢業了...高等教育的失敗案例
latest #43
debɐnchery
2 months ago
高等教育有教這葛的差異嗎XD
所以具體而言到底是哪裡不同XD
冷魚魚
2 months ago
xatierlike: 是沒有,但這應該是花五分鐘 google 就不會問出來的問題 (至少不會這樣問)
立即下載
冷魚魚
2 months ago
Andrewsonic: 倒不如說這兩個東西關聯甚小吧,風馬牛不相及
可是概念上不是都取平均嗎?
冷魚魚
2 months ago
blur 是取(加權)平均沒錯,雖然比較潮的說法是說取卷積
但是 anti-aliasing 概念上不是取平均,是從更高解析度的資料裡採樣
像假設在螢幕上畫一個黑色正圓 ,數學上圓解析度是無限的嘛,但是螢幕像素是有限的,就會有像素點有一部份在圓內一部分在圓外,按照內外的比例塗灰就是 anti-aliasing
如果沒有原始的高解析度資料,只有已經畫出的有 aliasing 的像素,理論上是無法做到真正的 anti-aliasing 的,只能統計方法近似
冷魚魚
2 months ago
感謝你安慰我讓我知道不是只有我有這兩個好像差不多的誤解
一個是pixel內所有東西的平均
一個是pixel跟附近的pixel平均
冷魚魚
2 months ago
是這樣沒錯,畢竟採樣完以後還是得把這些採樣塞回低解析度的 pixel 裡面,只好平均一下不然沒辦法塞回去
所以這兩個東西效果看起來很像的原因就是他們實際上做的事情也真的很像
冷魚魚
2 months ago
當然有一些相似性啦,不然我也不會曾經有這種疑惑
不過我現在是覺得本質上是很不同的兩件事
debɐnchery
2 months ago
不過如果從更高階的角度看,也可以當成是做 convolution的時候給不同 kernel (安安講人話
例如一個 3x3 裡面全部都是 1 的 kernel 你會得的 blurring 的效果
給一些這個可以得到 anti aliasing

Lanczos resampling - Wikipedia
debɐnchery
2 months ago
從數位訊號處理的角度來看就都是一個 Filter ,因為 operator 不一樣所以得到不一樣的結果
這麼說好了,我們應該都同意說:
Blur 是我有一張 (100x100)px 影像
然後我把這張影像的每個 pixel 跟周圍取平均(加權或不加權)
然後生出一張比較模糊的 (100x100)px 影像
然後AA是為了要生出一張(100x100)px 的影像
1. 我先生出一張 (300x300)px 的影像
2. 把這張 (300x300)px 的影像分成 (100x100)個(3x3)px格子
3. 把每個 (3x3)px格子取平均得到 (100x100)個值
4. 把這 (100x100)個值輸出成一張 (100x100)px 的影像

這件事情跟
1. 我先生出一張 (300x300)px 的影像
2. 把這張 (300x300)px 的影像 給 blur 了 (自己跟周圍8個pixel不加權平均)
3. 取(x,y)座標 3n+1 的 pixel 來組成一張 (100x100)px 的影像
得到的結果是一樣的
xatierlike: 所以說blur是undersample,然後AA是先oversample然後undersample這樣(蛤
等等,更正一下我想到了
Blur是先undersample然後oversample
AA是先oversample然後undersample
debɐnchery
2 months ago
應該是說,想辦法找出高解析度的訊號特徵後,再投影到低解析度的輸出上

blurring 沒有做這步驟
冷魚魚
2 months ago
Andrewsonic: 你這兩個我覺得都是 AA 啊,只是後者這個你拿 blur 來當其中一個步驟
因為我覺得本質的差別是 AA 需要高解析度的資料(或是透過統計方法得到的假想高解析度資料)
你能生出 300x300 就是 AA 了,就只是呼叫 blur 來作其中一個步驟
就我也不覺得 blur 0c4
冷魚魚
2 months ago
blur 和 AA 的差別是「使用的 kernel 不同」這種差別,如果只是單純把 blur 的 kernel 換另一種 kernel 也就是得到另一種卷積
冷魚魚
2 months ago
一張 4K 的圖套用 Lanczos filter => 一種卷積,廣義上來說我覺得也可以說是一種 blur
套用完以後取 2n+1 的 pixel 組成一張 2K 的圖 => 這樣才是 AA
我的理解是這樣
或者更直接說既然叫 anti-aliasing 就是代表它有對應的「會有 aliasing」的最 naive 實作嘛,例如上面這個過程你把 Lanczos filter 拔掉直接取 2n+1 的 pixel,這樣就變成 aliasing 最明顯的 nearest downsampling
所以 downsampling 之前如果沒有先 blur 就會 aliasing
冷魚魚
2 months ago
在解析度倍數是固定的時候的時候確實可以把 blur 當成一個步驟
但是 AA 涵蓋的情況比這更廣,例如一張貼圖是二維的,但是貼到遊戲中的三維模組上,再投影回螢幕上的像素
這種情況你要 sample 原貼圖的像素在畫到螢幕上就沒辦法用「先計算原貼圖和某種 kernel 的卷積」這種方式了啊
冷魚魚
2 months ago
*再
所以才會有SSAA這「我就暴力硬生一張n倍解析度的圖然後blur起來downsampling」這種做法不是嗎XD
冷魚魚
2 months ago
假設這個模組不是跟鏡頭平行的,這時候每個部分 up/downsampling 的倍數就不相同,也可能一部份是 up 一部份是 down
常見的做法是 bilinear interpolation (如果有 mip-map 就是 trilinear interpolation),這也是 AA,但是叫做 blur 就非常勉強,這就是我覺得本質上的不同
冷魚魚
2 months ago
這跟 SSAA 又有點是不同步驟
SSAA 是暴力先渲染n倍解析度的圖沒錯,但是你渲染這張的時候怎麼對貼圖取樣,這是兩回事
冷魚魚
2 months ago
不過我覺得這噗裡的人 (也沒幾個人) 都知道實際上 AA 是怎麼回事啦
上面這些討論只是語義上的細微差別
我以前問這個問題是我根本不知道 AA 是怎麼回事,我當初以為 AA 只需要在低解析度的圖和一個神奇矩陣取卷積就好了...
等一下,你讓我注意到一個問題,
一般來講 rendering 的過程中什麼時間點會需要用到AA?
因為AA針對的 aliasing 一般是在 hi-res->low-res 或是 vector -> raster 的過程中 down-sampling 產生的東西。
這件事情在「把所有東西畫到1920x1080個pixel」這個步驟上確定會發生。
但過程中有其他步驟會發生嗎?
debɐnchery
2 months ago
神奇矩陣 XDDD
debɐnchery
2 months ago
Andrewsonic: 只要是會有 down sampling 導致原本不一樣的訊號會投影到同一個位置就是 aliasing
debɐnchery
2 months ago
從訊號的角度來看,只要你 sampling rate 和原本訊號的頻率滿足這個就會 aliasingNyquist frequency - Wikipedia
debɐnchery
2 months ago
圖學的情況也是類似,較小解析度的畫布就是你的 sampling rate ,只要這個解析度和原圖的資訊滿足 nyquist 條件就會發生
debɐnchery
2 months ago
正規一點就是又香又濃的香濃(三小)的這葛Nyquist–Shannon sampling theorem - Wikipedia
debɐnchery
2 months ago
圖學上的話, aliasing 在不同的維度都會存在
例如256 色的畫布上,最多就是 256 個離散的階數來取樣原本的訊號(零維)
直線上,點和點點距離也存在一樣,Pixel 的寬度之於原本的訊號是取樣率(一維)
一個平面上,pixel 格子的寬度是取樣率(二維)
空間上 三維的格子寬度 加上攝影機視角和投影)
四維空間上,幀與幀的寬度..
debɐnchery
2 months ago
用更通用的角度來看,類比訊號是連續的,轉成離散的數位訊號就會發生XD
debɐnchery
2 months ago
笑死 剛剛發現 adobe 文件跟你說遇到 aliasing 時可以套高斯模糊XDDDDDUnderstanding aliasing and anti-aliasing techniques ...
冷魚魚
2 months ago
針對遊戲來說
那只要有取樣幾乎都會用到啊
只要遊戲有用到任何貼圖取樣都會需要用 bi/trilinear interpolation,這就已經是 AA 了 (相對於最樸素的 point sampling...除非是純像素風的遊戲)
如果有陰影的話,最簡單的即時陰影實作也是需要畫到一張貼圖上然後再取樣出來,這也算
如果有光追的話,光追應該也需要某種 AA (和 offline renderer 的 adaptive sampling 對應,但我不知道現實中的顯卡光追是不是這樣做的)
冷魚魚
2 months ago
xatierlike: 欸完蛋了被 Adobe 打臉
好吧如果只要讓 aliasing 比較看不出來都可以算的話... 所以把圖片整張刪掉也算是一種 AA
冷魚魚
2 months ago
附帶一提雖然上面都是講用某種卷積 + nearest point sampling 來實作 down sampling 時的 AA
但遊戲中的 blur 為了善用顯卡性能,反而是反過來,用bilinear interpolation 來實作 blur,不去直接乘某個矩陣(當然這樣的 blur 就不是高斯模糊)
果然這兩者是一家親的
debɐnchery
2 months ago
笑死 整張圖片刪掉也是 AA
技術上來說沒錯wwwwwwww
debɐnchery
2 months ago
路邊看到,影像也遇到一樣的問題w这是什么?摩尔纹。
back to top