1. 程式人生 > 實用技巧 >Unity URP shader做熱空氣扭曲與Bloom衝突問題

Unity URP shader做熱空氣扭曲與Bloom衝突問題

做熱空氣扭曲的原理是拿到螢幕截圖然後結合UV變換達到影象扭曲的效果。

在Unity的Build-in渲染管線下可以在合適的時機使用GrabPass截圖,但是在URP管線下沒有GrabPass了,想要獲取截圖只有_CameraColorTexture和_CameraOpaqueTexture,但是這兩個都有一些問題。

_CameraOpaqueTexture是在不透明通道渲染後截圖,所以截不到半透明的物體。

_CameraColorTexture是在半透明通道渲染後和PostProcessing後截圖。

這裡使用RendererFeatures在AfterRenderingPostProcessing後獲取截圖並做扭曲處理,但是發現它沒把Bloom效果截進去,導致會有如下效果:

這時候有個辦法就是新增一個Overlay的Camera,CullingMask設定Nothing,並把這個Camera新增到主Camera的Stack裡面。這時在PostProcessing渲染通道渲染完成後會有一個_AfterPostProcessTexture的螢幕截圖,這個就是正確的螢幕截圖了,這時候使用這個截圖就可以做出正確的扭曲效果。

Demo:https://download.csdn.net/download/yhjsspz/12998097