【2.8】flowmap的實(shí)現(xiàn)—流動(dòng)效果實(shí)現(xiàn)
問(wèn)題+:如何將IBL(Image based lighting)結(jié)合到視差映射(Parallax Mapping)中?
(Unity3D瞳孔渲染效果展示有展示)
根據(jù)今天的課程內(nèi)容,實(shí)現(xiàn)一下流動(dòng)效果(flowmap).
01.Flowmap是什么?
模擬水體,運(yùn)算簡(jiǎn)單,容易實(shí)現(xiàn),原理簡(jiǎn)單。
flowmap的實(shí)質(zhì):
一張記錄了2D向量信息的紋理,F(xiàn)lowmap上的顏色(通常為RG通道)記錄該處向量場(chǎng)的方向,讓模型上某一點(diǎn)表現(xiàn)出定量流動(dòng)的特征。
通過(guò)在shader中偏移uv再對(duì)紋理進(jìn)行采樣,來(lái)模擬流動(dòng)效果。
(我愿意稱(chēng)之為UV映射貼圖,可以理解為覆蓋在2D圖片上的貼圖…)
偏移原理如下:
我們將flowmap貼圖與采樣貼圖混合后,擾亂原本的采樣UV信息并重新采樣后會(huì)得到一個(gè)很“混亂”的采樣結(jié)果。
02.為什么要使用flowmap?
類(lèi)似UV動(dòng)畫(huà),而非頂點(diǎn)動(dòng)畫(huà)。換言之,無(wú)需對(duì)模型直接修改。
二、Flowmap shader
1.采樣Flowmap獲取向量場(chǎng)信息
2.利用向量場(chǎng)信息,使采樣貼圖時(shí)的UV隨時(shí)間變化。
3.對(duì)同一貼圖以半個(gè)周期的相位差采集兩次,并線性插值,使貼圖流動(dòng)連續(xù)?
使用flowmap獲取流動(dòng)方向!flowmap不能直接使用,將flowmap上的色值從[0,1]的范圍映射到方向向量的范圍[-1,1]。
為了創(chuàng)造一個(gè)周期性的形變,我們將偏移控制在一定范圍:
然而使用了frac函數(shù)會(huì)導(dǎo)致發(fā)生跳變,因此需要再創(chuàng)造一個(gè)周期相同,相位差半個(gè)周期的函數(shù)(?)
函數(shù)繪制工具(Desmos)
1.ShaderGraph中使用flowmap:
2.Shader中使用Flowmap偏移uv:
3.Shader中使用Flowmap干擾法線貼圖:
與漫射貼圖類(lèi)似,
三、Flowmap的制作:
1.Flowmap Painter:
非常好上手,非常好學(xué).
注意:1.使用該工具得到的flowmap為線性空間下的顏色,不需要使用gamma矯正,Unity中需要取消勾選sRGB。 2.需要設(shè)置為無(wú)壓縮或高質(zhì)量
2.Hodini
(缺一些截圖,暫時(shí)先不上了)