看板 PlayStation 關於我們 聯絡資訊
※ 引述《zongshi (SPIDEY)》之銘言: : 不知道是不是只有我這樣 : 就是這次戰神的畫面,在用右類比轉動人物時 : 很明顯可以看到奎爺的模組跟背景的交界處呈現較低畫質的現象 : 有點像人物周圍被上了一圈馬賽克的感覺 : 各位有這個問題嗎? 之前我推文提到有可能是"時域反鋸齒"的副作用 (temporal anti-antialiasing, TXAA) 當時不確定純猜測,今天玩GoW的時候突然想到 就靠近螢幕去觀察,然後看到原po所謂一圈馬賽克的感覺了 現在幾乎確定是TXAA的副作用 在此分享一下原理:) (為了避免用太多術語,有些地方有簡化或不甚嚴謹) 註: 看完本文之後有可能以後會更加注意到TXAA副作用 進而影響遊戲體驗,不想冒此險者請左轉 嗯?還在繼續讀嗎?該給的警告已經給了唷! 在TXAA開始流行之前,傳統反鋸齒做法是"超取樣" 大致概念是使用比實際像素數目還要高的取樣數目 每個取樣點當作是個像素渲染一次 每個像素對應超過一個取樣點 像素最終顏色是多個取樣點渲染結果的的加權平均值 基本上可想成是運算較高解析度的畫面 然後把一些像素融合後縮小成實際解析度 TXAA則是每個frame稍微挪一下攝影機 讓攝影機有小於單一像素大小的"微震動" 然後跟上一個frame結合渲染,得到到新frame 如果每個像素只是單純跟上個frame的同位置像素做加權平均 那效果就只會是單純的視覺暫留模糊,看起來會更糟! 所以要推測每個像素在上個frame時在哪裡 然後用上個frame該位置的像素來做加權平均 這樣相當於是用多個frame的時間達到超取樣的效果 在算圖的時候,不是只算玩家看到的最終顏色結果 中間的運算結果還含像素在空間中的深度、材質參數、速度等資料 速度資料可以用來反推算一個像素在上個frame的位置 就是這個位置的像素顏色被拿來跟當前像素做加權平均 但如果用速度反推算上個frame的像素位置,找不到資料怎麼辦? 很多情形都會有這種資料不足的狀況 例如位置反推算出來之後發現其實在螢幕外面,根本沒有被運算 或是上個frame的像素應該出現的位置被其他物件擋住了 後者就是原po提到的問題 畫面旋轉的時,角色後繞出來的背景部分在上個frame是被遮住的 用像素速度反推算會找不到需要的資料 所以一般的做法就是對沒有過去資料的像素做模糊處理帶過 這個副作用,有突然出現或消失的物件 或有迅速移動跨過大量像素的物件時,尤其明顯 需要跨過數個frame,經過多次加權平均之後才會把舊資料的影響"清掉" 這樣就會產生殘影(俗稱ghosting) 看看這個Unreal Engine 4的Kite demo https://youtu.be/nwuFd5uK_xQ
在1:22左右的地方可以看到 快速大面積移動的鞋子,在有高頻細節加上風吹變形的草皮背景上留下殘影 TXAA另外一個副作用 常常出現在有高頻率細節加上特殊扭動效果的物件上 例如被風吹動的頭髮或者草 扭動效果是用動態方式算出變型的 如果沒有正確地同時算出速度 那就無法準確反推上個frame的像素位置 有時候使用的變型函數速度計算太複雜而吃效能 又有時候甚至不可能算出正確速度 因為使用的變型函式無法微分而算出速度 這樣就只能將就用估算的方式計算速度 結果還是比完全沒有速度資料好 但是多少會有詭異的殘影 還有一個TXAA常見的副作用 會出現在沒有整合到核心渲染流程的元素上 例如某些半透明物件或者某些特效 繪製這些元素的時候用的是經過微震動後的攝影機位置 但是沒有經過時域加權平均的流程 所以能看到這些元素沒有經過反鋸齒處理、且又有微震動 例如GoW中Niflheim一開始橋上的石頭大門上的藍色發光符文 就近觀察就可以注意到小於一個像素大小的微振動 既然TXAA有這些副作用,那為什麼還這麼熱門呢? 兩個字: 便宜 (運算資源消耗方面) 跟增加取樣數量的反鋸齒方法比起來 每個frame需要運算的像素數量維持不變 只是增加了用速度反推上個frame像素位置和讀取結果的額外運算 就像為什麼幾乎所有遊戲都要用LOD (level of detail) 過遠的物件用比較簡單的模型替換 替換過程沒有處理好,就會讓玩家看到視覺不連續性(俗稱pop) 原因也是兩個字: 便宜 或是像仁王,較遠敵人的動作幀率會減半 原因還是這兩個字: 便宜 開發遊戲有很大心力是花在從眾多效能優化手段中取捨 在副作用可接受的範圍內,想辦法讓玩家體驗最佳化 能夠好好享受遊戲是最重要的 我在玩GoW會被的優化副作用干擾到嗎?不會 偶然間注意到TXAA副作用時,頂多想說 "啊,是TXAA" 然後照樣繼續玩,我覺得GoW超讚的啊! 以上 -- Web http://AllenChou.net Twitter http://twitter.com/TheAllenChou LinkedIn http://linkedin.com/in/MingLunChou -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.33.43.15 ※ 文章網址: https://www.ptt.cc/bbs/PlayStation/M.1525807419.A.50C.html
itsawar99: 先推一個免得人家以為我文組的看不懂05/09 03:48
※ 編輯: cjcat2266 (160.33.43.15), 05/09/2018 05:16:34 cjcat2266:轉錄至看板 GameDesign 05/09 05:23
nonedude: 推CJ 05/09 05:46
e04su3no: 嗯嗯 原來如此 05/09 06:26
kimisawa: 你們家有沒有因為戰神感到壓力啊?XD TLOU2期望很高 05/09 08:06
kimisawa: 良性競爭 05/09 08:07
PTTfaggot: 推 05/09 08:26
yanuichou: 推 CJ大 05/09 08:27
zorroptt: 哼哼 和我想的一樣 (心虛 05/09 08:28
cjcat2266: 玩戰神然後說 "哇,那個效果想試試看" 的情況是有的 05/09 08:32
dklassic: 推 CJ 05/09 08:51
dklassic: https://youtu.be/NbrA4Nxd8Vo 其實 DF 最近剛好有個詳 05/09 08:51
dklassic: 細的反鋸齒解說影片,應該看這個最簡單 XD 05/09 08:51
moritsune: 先推一下以免人家發現我看不懂 05/09 08:53
antony0310: 也許該看一些電腦圖學的書,不然也只是好像懂 05/09 09:04
itsdelovely: 推 05/09 09:20
MadMagician: 便宜以外還有降低運算負擔吧 05/09 09:38
cjcat2266: 那就是我所謂便宜的意思 05/09 09:47
cjcat2266: 等等,我的目標是不會圖學也看得懂,還有什麼地方需要 05/09 09:47
cjcat2266: 簡化嗎? 05/09 09:47
dklassic: 應該沒問題吧 XD 大概只是「先推以免別人覺得我看不懂」 05/09 09:52
dklassic: 的梗 05/09 09:52
kincaid520: 謝謝你的解說,想請問傳統反鋸齒是指FXAA或MXAA嗎(不 05/09 10:08
kincaid520: 知道我有沒有記錯名字> <||| 05/09 10:08
cjcat2266: FXAA是後製手法,效能好但效果有限,MSAA是超取樣的一 05/09 10:39
cjcat2266: 種 05/09 10:39
OROCHI97: 推,寫的算好懂啊 05/09 10:44
evo2001: 推解說,淺顯易懂 05/09 10:46
kincaid520: 謝謝回答 05/09 11:11
xul4rmpcl4: 可以懂 05/09 11:20
※ 編輯: cjcat2266 (23.242.26.50), 05/09/2018 11:22:45
kuku321: TXAA對於特效也是蠻破壞性的要素 FF15的特效美術師對TXAA 05/09 12:45
kuku321: 造成的破壞很頭痛 也因此DQ11沒有採取TXAA 和粒子特效等 05/09 12:45
kuku321: 的相性並不是很好 很容易讓特效整個糊掉 05/09 12:45
sarusama: 看不懂還是要推~ XD 05/09 12:50
x12118: 推,回家開戰神來試試開眼了嗎?XD 05/09 13:11
jakechen1027: 推,很清楚 05/09 13:55
ksng1092: 其實搭配慢動作影片(其實動態gif也就夠了)會更好懂XD 05/09 14:03
patrickleeee: CJ的文推就對了 05/09 14:16
graphict: 大推啊 05/09 22:38
PangYen: 推 每次看cj大的文章都可以學到一些東西 感謝分享 05/09 23:24