項目在開發過程中,有一些需要postprocess做後期處理的部分,但是這種處理又不是全局的,只希望在一些部分使用,比如倍鏡效果啊,紅外線什麼的,這使用標準的ppm是無法精確定位的,查閱了一些資料和反覆實驗後嘗試出了一些奇技淫巧。

類似這種,我們可以看到,倍鏡外面的是使用了模糊的效果,倍鏡裡面又是標準的顯示效果.

再比如這種,鏡頭內是翻紅的距離場效果,鏡頭外是加了模糊和tonemapping的處理

這種就是鏡頭外模糊加顏色疊加,鏡頭內是紅外效果

當然,這些濾鏡和演算法都沒啥稀奇的,還是比較容易實現的,今天只是在這裡說下利用umg實現這種濾鏡多次疊加的思路.

首先我們自定義一個UUserWidget類型的控制項,在控制項里定義mask材質和用來疊加postprcocess的材質。

最後效果就類似這樣

然後在界面上定義要使用postprocee的區域

通過獲取控制項的形狀和位置來處理一個rendertarget

然後利用drawcanvas來直接繪製到屏幕上,也就是說,umg里的面板實際只是提供了位置和大小信息,以及一些材質的制定,真正的操作是通過UCanvas來完成的,類似下面這樣.

至於postprocess的material裡面就簡單的通過屏幕位置疊加蒙版做操作就可以了,這個沒有什麼花頭的。

大致思路就是這樣,細節的東西我相信大家稍微一推敲就知道了,不是什麼難事。

寫的隨意了些,只是提供個思路,歡迎指正啊!


推薦閱讀:
相关文章