🔧 17.Tone Mapping後處理

ASP提供兩種額外的Tone Mapping演算法,Filmic與Khronos PBR Neutral。
此外,ToneMapping對人物pixel的強度可以透過額外的參數來控制。
💡 在某些情況下你可能會希望人物的pixel套用比畫面中的其他部分更弱的tone mapping強度 - 原因是使用Filmic時,容易使人物的顏色飽和度過低,ASP提供了額外的參數,降低該Tone Mapping對人物pixel的影響,從而保留顏色的飽和度
1. (展開查看)將Tone Mapping用的Renderer feature與Volum Override加入專案與場景
首先,到專案目前使用的Universal Renderer Data中,加入ASP ToneMapping。

接著,在場景的物件上上新增一個(或是用現有的)Volume,並且設定為Global Mode,
在Volume的inspector上選擇Add override,搜尋ASP ToneMapping並且將其加入。
加入後你的Volume應該會向下方截圖一樣,可以看到ASP Tone Mapping。

左側的整排toggle代表了甚麼?
Unity的Volume使用一種叫做 Volume Override 的架構,
簡單來說必須將左側的override toggle打勾之後,在右側的toggle選項才會生效,不然皆會使用該後處理特效的預設值。

以上圖來說,screen space outline的Enable Outline 預設值是true,因此當這個outline的renderer feature在renderer data中啟用時,outline就已經開啟了。
如果要在volume中關閉outline效果的話,須將左側的override toggle打勾,再將右側的toggle設為false。
2. (展開查看)將專案的Grading Mode設定為High Dynamic Range(重要)
為了要能正確的套用使用者自訂的Tone Mapping,Unity專案必須將URP Asset的Grading Mode設定為HDR,原因是 - 如果是LDR的設置,Unity在Post Processing階段會在內部進行一次color LUT,導致最終的自訂Tone Mapping效果不正確,如果是HDR的設置,則Unity會在Tone Mapping套用後才進行color LUT。

3. 設定Tone Mapping參數

| 參數名稱 | 說明 |
|---|---|
| Tone Map Type | 選用的Tone Mapping 模型(目前提供Filmic與Khronos Neutral) |
| Filmic Exposure | Filmic Tone Mapping的曝光度 |
| Ignore Character Pixels | 是否讓tone mapping效果,根據額外的參數來降低對ASP/Character與ASP/Eye材質的影響力。 |
| Character Pixel Tone Map Strength | 如果Ignore Character Pixels設為true,Tone Mapping效果針對ASP/Character與ASP/Eye材質的影響力。 |
開啟 Tone Mapping
將 "Tone Mapping Type" 左邊的 toggle 設為
true,以開啟 Tone Mapping。選擇喜好的Tone Mapping算法
💡 2024/08/10開始加入了Khronos Neutral算法,個人建議卡通渲染使用這個算法即可
-
- 將 "Ignore Character Pixel" 的 toggle 皆設為
true。
- 此設定會使 Tone Mapping 的效果從人物的像素上消失。
- 將 "Ignore Character Pixel" 的 toggle 皆設為
-
- 調整最下方的 "Character Pixel Tone Map Strength" 參數。
參數
0代表 Tone Mapping 完全不會影響人物的像素。參數
1代表完全不會限制 Tone Mapping 對人物像素的影響。建議範圍:如果使用Filmic算法
0.25至0.7是理想的範圍。建議範圍:如果使用Khronos Neutral算法,不建議使用Ignore Character Pixels以及額外的參數來控制對人物pixel的影響度,因為這種算法預設已經保留了顏色的飽和度。
4. 效果比較
最後提供三組對照圖,分別是不使用Tone Mapping、Filmic Tone Mapping,以及Khronos Neutral Tone Mapping
可以看出,使用Khronos Neutral Tone Mapping可以保留較多的顏色飽和度,而Filmic則是可以透過Character Pixel Tone Map Strength參數來控制該Tone Mapping對人物pixel的影響度。





