為什麼現實世界的角落看起來比螢幕空間環境遮蔽(SSAO)預測的要亮得多
為什麼現實世界的角落看起來比螢幕空間環境遮蔽(SSAO)預測的要亮得多
TL;DR – 真實的角落並不像典型的 SSAO 渲染那樣暗
日常室內角落的照片只顯示出微弱且不一致的邊緣暗化,而許多遊戲卻透過螢幕空間環境遮蔽(SSAO)施加明顯且均勻的暗化。這個差異源自於 SSAO 的近似、環境光著色的誤用,以及過度激進的權重設定。
前提:SSAO 的角落暗化問題
- 遊戲開發者喜歡 SSAO,因為它能以低成本增加深度感。
- 常見的 SSAO 人工製品包括 凸角的亮光暈、凹角的銳利暗帶,以及 房間邊緣的整體過暗。
- 作者認為這些人工製品源於一個錯誤的觀念:認為現實世界的角落本質上非常暗。
四個導致因素(作者所列)
- SSAO ≠ 完整環境遮蔽 – 螢幕空間取樣會遺漏視角背後的幾何體,導致光線被低估。
- AO ≠ 全局光照 – 即使 AO 計算正確,它只捕捉遮蔽,無法呈現全局光照(radiosity)所提供的完整間接反射。
- 將 AO 套用於所有光照 – 某些管線會把 AO 乘入直接光照,造成暗化過度。
- 啟發式權重 – 藝術家常常提升 AO 強度以讓效果顯眼,卻掩蓋了現實世界中微妙的變化。
方法論:攝影實測真值
- 相機:Canon 5D Mk II,JPEG 輸出,曝光 1/80 – 1/8 秒。
- 處理:4 倍下採樣,對色度通道做 16 像素高斯模糊以抑制噪點。
- 測量:沿穿過邊緣的線取 5×5(或 3×3)盒狀濾波像素平均值;以 sRGB 亮度圖繪製。
- 注意事項:圖像為 sRGB,色調映射未知;圖表呈現的是 sRGB 數值,而非線性光。
案例研究
1. 極度暗化的角落(圖 1)
- 這個角落看起來像典型的 SSAO 渲染,但大部分暗部其實來自 凹陷燈具投射的柔和陰影,而非環境遮蔽。
- 圖表顯示陰影側的亮度急劇下降,另一側則呈現較溫和、由 Lambertian 驅動的暗化。
- 結論:SSAO 會錯誤地把整條暗帶視為遮蔽,進一步放大效果。
2. 沒有主導柔和陰影的角落
左側角落
- 直接光主要來自側燈;天花板向邊緣稍微變暗,牆面仍保持明亮。
- 圖表證實天花板暗化僅屬適度;牆面亮度保持穩定。
中央角落
- 主要是間接光照;圖表 平坦,顯示除 Mach‑band 感知外幾乎沒有邊緣暗化。
- 使用較長曝光時,測得的暗化仍然很小。
右側角落
- 強烈的透視使視覺暗化看起來很陡峭,但校正後的測量揭示出 漸進 的變化。
- 後牆幾乎沒有暗化;左牆與天花板則呈現明顯但柔和的衰減。
3. 暗浴室角落
- 即使在低光環境下,牆面與天花板的測量暗化也 極少。
- 短曝光與長曝光的圖表僅顯示輕微變化,與預期的明顯 AO 風格暈影相左。
4. 靠近光源的角落
- 地燈的直接光在牆面上形成明亮區域;對側牆因 次要陰影 而暗化,並非環境遮蔽。
- 圖表顯示左牆僅有微小的邊緣暗化,天花板卻因反射光而向牆面方向變亮。
5. 天花板與牆面之間的單一邊緣
- 隨著環境光貢獻向暗側增加,測得的暗化 並未持續上升;牆面在後續樣本中甚至變平。
- 這種不一致性說明單純的 AO 暗化模型無法捕捉如此細緻的行為。
數據揭示的事實
- 邊緣暗化微弱且高度依賴情境——只有在其他因素(柔和陰影、透視、色彩對比)已經使表面變暗時才會出現。
- Mach 帶(邊緣的感知對比)常被誤認為是真實的暗化。
- 線性光 vs. sRGB——若將 sRGB 圖表轉換為線性空間,暗化會被放大,但仍遠低於遊戲中激進的 SSAO 曲線。
社群回應(精選評論)
"SSAO 成本低、效果不佳,過度使用會很難看…最簡單的解法就是把它調低。" – ahartmetz
"寫實不是目標;重點是好看。過了『驚嘆』階段後,大部分現實都相當平淡。" – overgard
"圖表顯示邊緣暗化不一致;SSAO 常常套用均勻暗化,與真實情況不符。" – logdahl
"Mach‑band 幻覺解釋了我們在過渡處感受到的暗化;在 SSAO 中人工加入會誇大此效果。" – BearOso
開發者的實用建議
- 將 SSAO 視為風格化輔助,而非物理精確模型——預期它只能近似間接陰影,而非重現測量得到的角落暗化。
- 將 AO 與直接光分離——僅將 AO 乘入環境光項,避免對已在陰影中的表面再次暗化。
- 依場景調整 AO 強度——使用適度的權重(例如 0.2–0.4),讓藝術家在需要時局部調整;避免使用一刀切的曲線。
- 考慮替代方案——如 FidelityFX CACAO、光線追蹤 GI 或預先計算的光照貼圖,皆能在相近效能下提供更精確的間接陰影。
- 以實際參考驗證——像本文所示的簡易攝影測量,可作為任何新 AO 實作的合理性檢查。
結論
攝影證據顯示,室內角落很少出現許多 SSAO 實作所強加的強烈、均勻暗化。感受到的暗度往往是柔和陰影、透視與感知對比的綜合作用,而非真正的環境遮蔽。因此,開發者應將 SSAO 視為視覺增強手段,謹慎限制其影響,並在需要寫實時考慮更具物理基礎的替代方案。