聚爆的扭曲刀光是怎麼實現的?

具體什麼演算法,自己從網上找的扭曲的Shader在手機上特別卡,他們的卻很順


熱擾動,非常常見的一個效果!~看起來高大上,但其實原理很簡單。

以下是Unity中的實現方式,實際用在項目中 還需要配合美術做。

簡單來講就是以下4個步驟

0.準備一張噪音貼圖

1.利用Unity的grabpass獲取一張屏幕空間的RT

2.在頂點著色器中計算用來採樣grabRT的uv坐標以及採樣噪音貼圖的uv坐標

3.在片元著色器中混合噪音以及grabRT

下面是源碼:meta-42/HeatDistortion


你用了 grab pass

這個換成自己的render texture就好了


粒子材質+半透明貼圖+模型+貼圖位移 模擬光效


xeffect 也是grabpass, 效率很差

在攝像機OnRenderImage中. 用RenderTexture 畫grab layer 中的扭曲圖.然後疊加這個到target。

但這種遮擋有時是不對的,如聚爆那個圖,穿了牆


別想了,完全的熱干擾必須用grabtex,這個需要等待一次渲染,手機是帶不動的。用rendertex貌似能緩解下,但同樣是二次渲染。最好用一些貼圖或者自己寫點特殊的光照來模擬下。比如用兩張貼圖。一張是刀光,一張用來扭曲刀光。


rendertexture 效率不是很高

去看看xeffect 作者的一個刀光插件

能通過純shader實現是最方便的


推薦閱讀:

為什麼IT行業二本院校找實習這麼難?
怎樣看待越來越多cocos2dx程序員轉unity3d,unity是否是大勢所趨?
Unity 項目中怎樣正確的使用 Lua?
如何零基礎系統學習3D遊戲開發?
在Unity中製作動畫,如何兼顧動畫和物理效果將人物頭髮處理到最佳效果?

TAG:遊戲開發 | Unity遊戲引擎 | 計算機圖形學 | shader |