【Unity系列】Post-processing Stack 環境建置

Rogerh.eth
誌瓜筆記
Published in
5 min readDec 24, 2019

前言

Post-processing(後製)是一種在遊戲畫面呈現於屏幕之前將「全屏幕濾鏡」與「特效」儲存至 Unity 攝像機的圖片暫存緩衝記憶體的步驟,它可以讓我們有效率的提升遊戲畫面的品質,也可以用後製特效來模擬物理運鏡和電影特效,以下兩張圖展示了後製與否的差別:

後製前場景
後製後場景

Post-processing stack

Post-processing stack 是 Unity 提供能幫助開發者完成後製的 package,他不只能夠讓遊戲開發者以更有效率的方式完成後製,也能夠客製化您需要的特效與畫面。

功能介紹

  1. PPAA(Post Process Antialiasing),又稱為抗鋸齒技術,是基於後處理的各種抗鋸齒技術的統稱,以下將介紹 Unity 可以使用的三種 AA 模型:
  • FXAA(Fast Approximate Anti-aliasing)是一種非常便宜但品質較差的方法,因其不需要 Motion Vector ,因此在各個平臺上都能快速執行。
FXAA 與 No AA 比較
  • TAA(Temporal Anti-aliasing)能夠在大部分情況下提供良好的圖像品質,但是因為他會對比前後畫格中的資料,所以當遇到新物件出現或是物件移動後露出後方景色時,就會因為缺乏這些圖像資料,而造成鋸齒、閃爍、雜訊等視覺性問題。
  • SMAA(Subpixel Morphological Anti-aliasing)是新興的後處理抗鋸齒技術,著重於邊緣紋理的計算,對邊角的鋸齒角處理做了修正,其中的算法相當複雜,如果有興趣了解的讀者可以到以下連結深入探討: 现代抗锯齿技术 — — PPAA中的新星SMAA
各 AA 技術比較

2. Ambient Occlusion(環境光遮擋):此效果依賴於深度和法線緩衝區使彼此靠近的摺痕、孔和表面變暗。在現實生活中,這些區域往往會阻擋或遮擋環境光,因此它們顯得更暗。

3. Screen Space Reflection(螢幕空間反射):此效果基於表面粗糙度計算螢幕空間中的反射。

4. Septh Of Field(景深):此效果模擬相機鏡頭的屬性。在現實生活中,相機只能以特定的距離對焦,距離相機更近或更遠的物體將會偏離焦點,模糊給出了物件距離的視覺提示。

5. Motion Blur (運動模糊):此效果模擬了大多數攝像機系統的光線隨著時間的推移而累積,例如:快速的相機或物體運動將產生模糊的影象,便是由此效果來實現。

6. Eye Adaptation(人眼適應):此效果根據其包含的亮度級別的範圍動態調整影象的曝光。這種調整在一段時間內逐漸進行,所以當黑暗的隧道出去時,玩家會被明亮的戶外燈短暫地眩暈。同樣,當從明亮的場景移動到黑暗的場景時,“眼睛”需要一些時間來調整。在內部,這種效果在每個幀上產生直方圖,並對其進行濾波以找到平均亮度值。

7. Bloom(輝光)是來自亮源(如閃光)的光洩漏到周圍物體中的光學效應。這是一個非常獨特的效果,將其與 HDR 渲染結合使用可以對場景產生很大的影響,建造出夢幻般的環境。另一方面,給定適當的設定,也可以使用這種效果來增強照片寫實感。在非常明亮的物體上發光是在電影和攝影中觀察到的常見現象。

8. Color Grading(顏色分級):此效果提供了基於行業標準和電影業知名軟體的完全實時 HDR 色彩分級管道。

顏色分級

安裝

接下來我將會帶您安裝 Post-processing stack 並使用這個 package 完成一個簡單的實作。

  1. 在 Asset Store 上搜尋 Post Processing Stack ,下載後 import 到專案中。
Asset Store 的 Post Processing Stack

2. 到 Window/PackageManager 新增最新版本。

💡 如果下載後出現錯誤,可能是以下問題,請依照以下提供的網址解決: ‘MinAttribute’ is an ambiguous reference between ‘UnityEngine.PostProcessing.MinAttribute’ and ‘UnityEngine.MinAttribute’

結論

以上便是使用 Post-processing stack V2 前需要做的準備。本篇的重點在於介紹 Post-processing stack V2 的重要功能以及安裝 Post-processing stack V2 ,在接下來教程中,我將會透過實作帶您實際開發與測試每一種功能,並詳盡解釋其中程式碼的細節,希望能對您有幫助,如果有任何問題想要討論,歡迎在底下留言!

--

--

Rogerh.eth
誌瓜筆記

Sharing what i have learned for becoming a great developer.