亮度、飽和度、對比度對后期處理的影響
Shader不僅可以做一些炫酷的效果,比如技能特效,粒子特效等,除了這些,它也是能對屏幕進(jìn)行操作的。
也就是屏幕后處理效果。畢竟它是渲染技術(shù)。能做后處理效果很正常。
今天給大家分享一個(gè)后處理效果,關(guān)于亮度,飽和度,對比度對后處理的影響。下面線來看看效果圖。

我們可以通過對亮度,對比度,飽和度的值進(jìn)行修改,從而修改最終的渲染效果。下面我們來看看這個(gè)效果怎么做。
首先說下原理,關(guān)于亮度的操作,其實(shí)很簡單的一個(gè)操作就是通過一個(gè)參數(shù),讓它和采樣后的變量進(jìn)行相乘就可以了,也就是對整個(gè)的RBG進(jìn)行縮放。
接著就是對比度的操作了,關(guān)于這個(gè)對比度我們可以首先定義一個(gè)最低的對比度值,然后根據(jù)用戶設(shè)置的變量讓對比度再最低和原圖之間進(jìn)行插值運(yùn)算。
同理,飽和度也是一樣的操作。最關(guān)鍵的就是如何計(jì)算最低對比度和最低飽和度。
最低飽和度其實(shí)相當(dāng)于灰度操作,灰度值的計(jì)算有很多公式,
我這里是這樣做的:fixed gray = 0.2125 * renderTex.r + 0.7154 * renderTex.g + 0.0721 * renderTex.b;
這是相同亮度下的最低飽和度值。
最低對比度如下:fixed3 avgColor = fixed3(0.5, 0.5, 0.5);然后進(jìn)行插值計(jì)算就行。
Shader代碼如下:

這是關(guān)鍵代碼,其他的都素通常的操作。然后我們在C#中來調(diào)用Shader中的變量。這沒什么說的。如圖:

還有一個(gè)點(diǎn)需要注意一下,由于是屏幕后處理效果,所有我們需要用到這個(gè)函數(shù):OnRenderImage。
后處理操作都需要用到它,這個(gè)函數(shù)的作用就是當(dāng)所有的渲染都弄完了過后,然后才調(diào)用它。