您當前的位置:首頁 > 攝影

每天一個圖形學知識——6,高階紋理之渲染紋理(後處理效果下)

作者:由 螺紋 發表于 攝影時間:2022-07-19

接著上一篇,繼續講一些常見後效的原理。

高斯模糊:

模糊的實現有好多種,有均值模糊以及中值模糊,均值模糊也用到了我們上篇文章講到的卷積,不過是每個因子都相同的卷積。

但是最常用的還是高斯模糊。高斯模糊的運用可以說是很多後處理效果的基礎,比如後面要講的Bloom效果的實現,以及UI中常用的毛玻璃效果虛化背景的效果。

高斯模糊也是運用到了卷積計算,其卷積核叫做高斯核。其核心公式如下:

每天一個圖形學知識——6,高階紋理之渲染紋理(後處理效果下)

解釋一下里面的係數的意思,分母那個代表著標準方差,一般為1,x和y分別代表當前位置離卷積核中心的整數距離。

高斯方程很好地模擬了領域每個畫素對當前畫素的影響程度——距離越近,影響越大。高斯核的維數越高,模糊程度越大。但是我們觀察公式,在取樣時不需要計算全部核上的值,一個5x5的卷積核,我們只需要三個權重即可。

我們先後呼叫倆個Pass,第一個使用豎直方向的一維高斯核對影象進行濾波,第二個Pass再使用水平方向的一維高斯核對影象進行濾波,得到最終的目標影象。

在實現中,我們還將使用影象縮放的方式進一步提高效能,簡而言之就是降低解析度,這樣模糊的效果也提升了,效能也下降了。我們可以透過調整高斯濾波的應用次數來控制模糊程度(次數越多,影象越模糊)。

Bloom效果:

Bloom效果是模擬真實攝像機的一種效果。可以讓畫面中較亮的區域“擴散”到周圍的區域中,造成一種

朦朧

的感覺。

實現原理很簡單,我們首先根據一個亮度閾值提取出影象中的較亮的區域,將這張影象儲存到一張渲染紋理中(這張紋理如果想看的話可以在unity的framedebug裡面看),再利用高斯模糊對這張渲染紋理進行模糊處理,模擬光線擴散的效果,最後再將其和原影象進行混合,得到最終的結果。

過程很簡單,而且在unity的最新的URP渲染管線中有預設自帶的效果。

運動模糊:

運動模糊也是模擬真實世界攝像機的一種效果。具體效果就不介紹了,玩過3D遊戲的都知道。運動模糊在高速遊戲裡很好用,很能營造出一種速度感。

實現的思路也有很多種,一種是利用一塊

累積快取(accumulation buffer)

混合多張連續的影象。然後取幾張影象的平均值作為最後的運動模糊影象。但是這種方式是很暴力而且消耗效能的。

所以,另一種方式是建立

速度快取(velocity buffer)

,速度快取和顏色快取,深度快取等等都一樣,也是一張渲染紋理,裡面記錄的是每個畫素的速度值。我們可以使用這樣一種快取從而計算出模糊的方向和大小。

標簽: 模糊  高斯  影象  效果  卷積