《Unity Shader》第十二章—屏幕后處理效果小結
再次來寫這次的小結啦。但總之寫起來感覺真的沒有想象中那么簡單,所以還是長話短說,把最大的思路寫下來就是我能做到最多的了QWQ.

????首先說說這一章總體內(nèi)容好了.先學習了一個基類腳本,我們需要在這個基類中實現(xiàn)后處理所需的?shader 與 我們所用的作用于 OnRenderImage參數(shù)中的scr的 材質(zhì) 的綁定(同時也check了后處理是否支持、shader是否可用。)有了這個基類,我們后面的腳本都將會繼承這個基類,并使用該功能自動生成一個private的material.
????好吧,這里有點廢話了,畢竟這是這章最最最基本的玩意兒了。剩下的都是分支出來的:亮度+對比+飽和度的調(diào)整實現(xiàn)、邊緣檢測(描邊)的實現(xiàn)、高斯模糊的實現(xiàn)、Bloom效果的實現(xiàn)、運動模糊的實現(xiàn)。
????先說第一個,這塊其實最重要的是提出了一個luminance的概念:我們可以通過一個像素的RGB通道計算出他的亮度值,然后通過這個亮度值去賦值給一個fixed3的rgb分量來表達一個片元的亮度(?)(這里存疑,筆者是這樣理解的,不知道對不對)然后利用這個”白度”加上我們的飽和度的量去和原本的顏色插值,得到運用飽和度后的顏色。對比度也是同理,不過我們需要用一個avgcolor(0.5,0.5,0.5)去和我們緩存的color進行插值.
????亮度的效果很好理解,不再贅述。剩下的都是筆者的猜測。飽和度是為了調(diào)整顏色的鮮艷程度(因為趨近于0時不會存在顏色差異,只有亮度差異了),而對比度是為了制造一種亮暗通道的差分。對比度越大,越亮的通道越亮,而越暗的通道會越暗。
????第二個邊緣檢測。這里也是引入了一個相當重要的計算:卷積。筆者理解就是有幾何意義的加權算法。而這里是為了計算出像素的顏色的變化(梯度)而使用的。利用卷積,我們可以輕松得到某個片元的顏色梯度,并利用該梯度插值。從而得到一個像素的原圖+邊緣顏色值和背景+邊緣顏色值。并通過另一個參數(shù)來插值從而決定原圖顏色的保留程度。
????第三個高斯模糊,其實這個和上一個原理相同,也是卷積。不過這里的幾個參數(shù)還是蠻有意思的,以及一個雙buffer的循環(huán)替換過程。這里就不過多講解了,自己看書吧!
????第四個bloom。這里其實就是需要先對圖像做一個特殊的處理,也就是提取亮部紋理輸出。利用了一個clamp函數(shù)來看究竟是否需要裁剪以及保留多少。然后就是和高斯一個路子了,將我們的亮部紋理不停卷積并使用高斯模糊。然后利用源紋理和高斯后亮部紋理相加即可。不過這里還有一個關于紋理坐標的平臺差異化處理需要注意。因為我們使用了額外的紋理,因此這張額外紋理需要多檢測一下平臺,以防止反轉(zhuǎn)。
????第五個運動模糊。這里與上面不同。我們需要一個不停存儲并混合我們圖像的一張紋理,然后不停地將其與我們的新紋理混合,并輸出。這里學習一下紋理的恢復操作與保留A通道的處理即可。
????這些大概就是這一章的內(nèi)容了。寫的好累.QWQ
