unity|后處理篇
- 前言
- 一、Post-Processing
-
- 1、 Post-Processing的使用
- 2、Post-Processing后處理效果
-
- 抗鋸齒
- ①、Ambient Occlusion 環境光遮蔽
- ②、Auto Exposure 自動曝光
- ③、Bloom 輝光/泛光
- ④、Chromatic Aberration | 色差
- ⑤、Color Grading 色調/顏色分級
- ⑥、Depth Of Field 景深
- ⑦、Grain
- ⑧、Lens Distortion 鏡頭變形失真
- ⑨、Motion Blur 運動模糊
- ⑩、Screen Space Reflections 屏幕空間反射
- 11、Vignette 漸暈
- 二、內置管線中OnRenderImage()方法實現
前言
在unity中實現后處理效果大致有兩種方式,一種是通過插件的方式,常用的方法就是使用unity內置的插件Post-Processing。第二種方式就是使用腳本獲取到渲染后幀緩沖區的圖像,再通過shader寫后處理的效果,最后合并輸出圖像到屏幕上。
這里記錄的后處理全部基于unity內置渲染管線展開,URP渲染管線和內置渲染管線的后處理方式會有些許差異。post-processing在內置渲染管線和URP渲染管線中也是會有一些差異的,具體可以去看官方文檔。
第二種方式是使用unity內置的方法OnRenderImage()這個方法實現,但是這個方法是在unity內置渲染管線中的,在URP渲染管線中并不會生效,當然在URP中也有替代方法去實現,這里不考慮這個。
一、Post-Processing
更詳細具體可以看unity中Post-Processing官方文檔
1、 Post-Processing的使用
- ①、安裝插件。
window->Packages Manager->Post Processing->install。 - ②、創建文件和添加組件。
創建Post-Processing Profile文件;新建空游戲物體,并且添加Post Process Volume組件;在相機上添加Post Process Layer組件。 - ③、設置層級Layer。
添加了Post Process Volume組件游戲物體、添加Post Process Layer組件的相機的層級都設置為同一個層級,如設置層級為post-Processing。
并且在Layer組件中設置的Layer也要一致。 - ④、掛載文件。
在Post Process Volume組件中掛載一開始創建的post-processing profile文件。
如果需要效果應用全局需要把Is Global勾選上。 - ⑤、添加后處理效果。
在Post Process Volume組件中,點擊Add Effect -> Unity -> (后處理效果)。
2、Post-Processing后處理效果
抗鋸齒
鋸齒是圖形出現“樓梯”狀的鋸齒,抗鋸齒效果使圖形邊緣更加平滑,一般圖片在像素不夠高或者圖片被放大的情況下就會出現這種鋸齒情況。
unity默認的抗鋸齒設置在Edit -> Project Settings ->Quality中設置。
而Post-Processing的抗鋸齒,是在相機中的Post Process Layer組件Anti - Aliasing。(抗鋸齒的效果不是在Post Process Volume組件中通過Add Effect添加的,其他的效果是在Post Process Volume組件中通過Add Effect添加的)
No - Anti - aliasling:無抗鋸齒效果。
①、Ambient Occlusion 環境光遮蔽
環境光遮蔽比較消耗性能,因此不建議在手游中使用。
一些凹陷的地方或者被周圍遮擋的地方,往往會被遮擋住周圍的光線,因此會顯得更暗。
- Mode | 模式 (Scalable Ambient Obscurance可擴展的環境觀測、Multi Scale Volumetric Obscurance多規模的體積測量)
- Intensity | 強度
- Radius | 半徑/幅度
- Quality | 質量
- Color | 顏色
- Ambient Only | 僅周圍環境
②、Auto Exposure 自動曝光
自動曝光效果根據圖像包含的亮度級別范圍來動態調整圖像的曝光。
- Filtering (%) |
- Minimum(EV) | 最低限制
- Maximum(EV) | 最高限制
- Exposure Compensation | 曝光補償
Adaptation 適應性
- Type | 類型
- Speed Up | 加速
- Speed Down | 減速
③、Bloom 輝光/泛光
在unity中的燈光,或者材質球中有發光材質,輸出顯示是沒有輝光的,為了營造更真實的光感,可以在后處理的中加入輝光的效果。
- Intensity | 強度
- Threshold | 閾值
- Soft Knee | 軟膝關節
- Clamp | 鉗制
- Diffusion | 擴散
- Anamorphic Ratio | 擬態比
- Color | 顏色
- Fast Mode | 快速模式(開啟快速模式會省一點性能,適合手游模式)
- (Dirtiness) Texture| 紋理
- (Dirtiness) Intensity | 臟跡強度
④、Chromatic Aberration | 色差
色差效果可以模仿真實攝像機在鏡頭無法將所有顏色融合到同一點時產生的效果。
也可以粗略做鏡頭的運動模糊效果,有一種運動時的速度感。即圖像四周會有色值偏差。
- Spectral Lut |
- Instensity | 強度
- Fast Mode | 快速模式
⑤、Color Grading 色調/顏色分級
顏色分級效果可以改變或校正 Unity 產生的最終圖像的顏色和亮度。類似于添加濾鏡。
- Mode |模式
- Lookup Texture | 查找紋理
- Contribution
White Balance白平衡
- Temperature | 色溫
- Tint | 色調
Tone
- Color Filter | 顏色濾鏡
- Hue Shift | 色相轉換
- Saturation | 飽和度
- Brightness | 明亮度
- Contrast | 對比度
Channel Mixer通道混合
- Red
- Green
- Blue
- Trackballs |
Grading Curve 分級曲線
⑥、Depth Of Field?景深
- Focus Distance | 焦距
- Apperture | 適應性
- Focal Length | 鏡頭長度
- Max Blur Size | 最大的模糊大小
⑦、Grain
類似于添加噪波噪點
- 1
- Colored | 噪波噪點是否為彩色
開啟的噪波噪點是帶有rgb色彩的,不開啟的噪波噪點是黑白色的。 - Intensity | 強度
從0到1強度大小,整體噪波噪點的強度 - Size | 大小
噪波噪點的大小 - Luminance Contribution
⑧、Lens Distortion 鏡頭變形失真
默認情況下,只調整強度大小的效果類似于凹凸鏡的效果。
- Intensity | 強度:調整的是變形的強度大小
- X Multiplier | X軸的程度:X軸上鏡頭變形的程度
- Y Multiplier | Y軸的程度:Y軸上鏡頭變形的程度
- Center X | X軸的中心:鏡頭默認是從中間的點來進行變形,可以通過調整這個數值調整X軸上的中心點進行偏移
- Center Y | Y軸的中心:對Y軸上的中心點進行偏移
- Scale | 大小:正常畫面大小為1,大于1則畫面被整體放大;小于1,整個畫面整體被縮小,但是整體畫面被縮小,顯示出來的就會填不滿畫布,填不滿的部分就會被圖像的邊緣填充。
⑨、Motion Blur 運動模糊
- Shutter Angle | 快門角度
- Samole Count | 抽樣計數
⑩、Screen Space Reflections 屏幕空間反射
- Preset | 預設
- Maximum March Distance | 最大行進距離
- Distance Fade | 距離衰減
- Vignette | 漸變
11、Vignette 漸暈
漸暈效果使圖像的邊緣變暗,讓圖像的中心更亮。
- Mode | 模式(Classic、 Masked)
- Color | 顏色
- Center | 中心
- Intensity | 強度
- Smoothness | 平滑度
- Roundness
- Rounded | 圓角
二、內置管線中OnRenderImage()方法實現
大致實現方法:
如果是在unity內置管線中,則相機掛載使用C#腳本用內置函數OnRenderImage來調用渲染管線中幀緩沖區的圖像,再調用shader,對圖像進行二次修改,實現后處理的效果。(新建一個材質球創建掛載shader,對shader內容進行編寫后處理效果的編寫。)
unity商店里面有一些免費資源下載下來也會有這些后處理和shader腳本,可以自行下載來研究,涉及到的太廣泛,就不寫了。