【Unity Built-In】高斯模糊和2K以上高分辨率問題
用的是Built-In渲染管線,由于Unity的PostProcessing包里沒有高斯模糊,所以自己實現(xiàn)一個。
網(wǎng)上的實現(xiàn)大多沒有考慮到2K及以上分辨率會出現(xiàn)的問題。不能一味濫用采樣間隔,太大網(wǎng)格化很丑,只能稍微加一點,配合降低迭代次數(shù),以求性能優(yōu)化。
2.1 需要初始化RT時就給一個比較小的大小比如1024*720。不然分辨率太大,再怎么模糊效果也不明顯
2.2需要每次迭代讓RT的分辨率降半,同上理。
(PS:分垂直,水平pass更多是為了提高卷積核邊長,其次才是性能。如果你用3x3的核,我認(rèn)為都沒有分pass的必要,不一定能提高性能反而可能降低)
為了懶,Shader中實時計算高斯權(quán)重了,消耗應(yīng)該不大。(消耗是不大,不過不分pass卷積邊長上不去,效果不明顯,干脆抄一個邊長9*9的,權(quán)重不實時算了,配合step和expand和intensity,這樣夠用了?!皦蛴谩敝缚梢阅:椒浅?鋸垼?/span>
代碼地址:
https://gist.github.com/ouerkakaChango/14bd31ef276c3849cdd5d51d074c57c4



測試看來高斯模糊沒有我想象得費(fèi)。(原圖是2K的,縮成1K,b站壓縮會出網(wǎng)格狀,這個我沒辦法了)即使是2K分辨率渲染,實時高斯模糊還能達(dá)到非常強(qiáng)模糊的效果,最重要是沒有濫用采樣間距導(dǎo)致網(wǎng)格瑕疵。
標(biāo)簽: