Shader_FlowMap應用

????????最近手游項目上需要給下水道做流動水,水流要能跟著彎曲流動,避開雜物,分流等。所以就采用了FlowMap來做。記錄下核心部分。
????????FlowMap推薦使用FlowMapPainter來制作。也可以使用其他有流體功能的軟件烘焙。

????????FlowMap實際還是UV動畫,只是事先制作好UV流動方向的貼圖, 非常方便定制不同的流動速度和方向,繞開固定位置物體等。下面用Unity插件ASE圖形化Shader直觀表示。
????????FlowMap是用的RG通道記錄坐標,同UV的坐標。
只需要讀取FlowMap里記錄的坐標根據(jù)時間對原UV進行添加即可讓原圖流動起來。
但是這里會有個問題,就是走完一個循環(huán)會出現(xiàn)閃回,然后從頭開始,沒有自然的銜接循環(huán)起來。

????????解決問題的關鍵就是通過兩層貼圖的流動偏移,交替過渡顯示,來讓流動自然循環(huán)起來。
這里就需要將時間錯開,這是整個FlowMap的算法核心。
得到兩個錯開的UV循環(huán)流動時間。

得到兩層貼圖的融合時間。

在原來的UV流動上,用兩個錯開的循環(huán)流動時間得到兩個錯開的UV流動。

對原貼圖分別用錯開的UV流動,通過融合時間Lerp兩層貼圖,輸出到對應貼圖接口。
其他類型貼圖重復下面的方法輸出即可。
