Unity鏡頭光暈模擬開源庫

2022-09-10 15:39:26 字數 1992 閱讀 1365

【博物納新】是uwa旨在為開發者推薦新穎、易用、有趣的開源專案,幫助大家在專案研發之餘發現世界上的熱門專案、前沿技術或者令人驚嘆的視覺效果,並探索將其應用到自己專案的可行性。很多時候,我們並不知道自己想要什麼,直到某一天我們遇到了它。

此開源庫的鏡頭光暈效果是由pseudo lens flare簡化修改的unity版本。本文主要分析了lens flare開源庫的大致實現過程及部分**解讀。

以示例專案為例,下圖展示了光暈效果的主要產生過程,經過了下取樣、ghost、半徑扭曲、散射重影和兩次虛化效果,最後疊加原始影象得到最終效果。

第一步,將原始影象做一次下取樣,同時通過引數_sub控制只保留畫面中亮的部分,通過引數_mul調節保留亮度(預設引數_mul=0.5)。

fixed4 frag (v2f i) : sv_target

類似於原blog中的第一步效果:

這一步模擬光暈效果中的斑點,通過三個引數可以控制斑點的個數、擴散和衰減。以下為引數調節的效果圖及shader部分**。

}3、radialwarp這一步是用於模擬乙個外部的光環,首先根據需要的光環半徑halowidth計算得到乙個半徑扭曲的影象,再新增光環的衰減效果。即可得到乙個根據原影象移動的光環效果。

4、aberration將第2步和第3步的影象疊加,即可得到乙個初步成型的光暈效果圖(下圖左)。這一步要模擬出光線的失真效果(下圖右)。

如下,為計算色彩失真的shader核心計算**,其中_chromaticaberration_spectrum是乙個1x3的三畫素rgb影象。

fixed4 frag (v2f i) : sv_target

return float4(sum / filtersum, 1);

}

最後將得到的影象做兩次blur效果,再與原影象混合後即可得到鏡頭光暈的模擬效果。

本文主要分析了lens flare開源庫的大致實現過程及部分**解讀。由於目前的版本效果運用了大量的後處理,渲染開銷較高,在移動端效能較差,並不建議直接在移動端使用。但其模擬的鏡頭光暈效果逼真,建議有需要的朋友可以一試。

快用uwa lab合輯mark好專案!

今天的推薦就到這兒啦,或者它可直接使用,或者它需要您的潤色,或者它啟發了您的思路......

lens flare 鏡頭光暈

最近的又乙個工作是給遊戲新增鏡頭光暈,google一下,gamedev上就有乙個很好的教程,最簡單的方法是 將太陽位置投影到螢幕空間,如果不在屏 幕內就不畫,否則從太陽位置向螢幕中心畫出一系列的光暈貼圖,混合方法還是src srcalpha,dest one。可完全當做2d進行繪製。我 使用irrl...

lens flare 鏡頭光暈

最近的又乙個工作是給遊戲新增鏡頭光暈,google一下,gamedev上就有乙個很好的教程,最簡單的方法是 將太陽位置投影到螢幕空間,如果不在屏 幕內就不畫,否則從太陽位置向螢幕中心畫出一系列的光暈貼圖,混合方法還是src srcalpha,dest one。可完全當做2d進行繪製。我 使用irrl...

lens flare 鏡頭光暈

最近的又乙個工作是給遊戲新增鏡頭光暈,google一下,gamedev上就有乙個很好的教程,最簡單的方法是 將太陽位置投影到螢幕空間,如果不在屏 幕內就不畫,否則從太陽位置向螢幕中心畫出一系列的光暈貼圖,混合方法還是src srcalpha,dest one。可完全當做2d進行繪製。我 使用irrl...