【2.8】flowmap的实现—流动效果实现
问题+:如何将IBL(Image based lighting)结合到视差映射(Parallax Mapping)中?
(Unity3D瞳孔渲染效果展示有展示)
根据今天的课程内容,实现一下流动效果(flowmap).
01.Flowmap是什么?
模拟水体,运算简单,容易实现,原理简单。
flowmap的实质:
一张记录了2D向量信息的纹理,Flowmap上的颜色(通常为RG通道)记录该处向量场的方向,让模型上某一点表现出定量流动的特征。
通过在shader中偏移uv再对纹理进行采样,来模拟流动效果。
(我愿意称之为UV映射贴图,可以理解为覆盖在2D图片上的贴图…)
偏移原理如下:
我们将flowmap贴图与采样贴图混合后,扰乱原本的采样UV信息并重新采样后会得到一个很“混乱”的采样结果。
02.为什么要使用flowmap?
类似UV动画,而非顶点动画。换言之,无需对模型直接修改。
二、Flowmap shader
1.采样Flowmap获取向量场信息
2.利用向量场信息,使采样贴图时的UV随时间变化。
3.对同一贴图以半个周期的相位差采集两次,并线性插值,使贴图流动连续?
使用flowmap获取流动方向!flowmap不能直接使用,将flowmap上的色值从[0,1]的范围映射到方向向量的范围[-1,1]。
为了创造一个周期性的形变,我们将偏移控制在一定范围:
然而使用了frac函数会导致发生跳变,因此需要再创造一个周期相同,相位差半个周期的函数(?)
函数绘制工具(Desmos)
1.ShaderGraph中使用flowmap:
2.Shader中使用Flowmap偏移uv:
3.Shader中使用Flowmap干扰法线贴图:
与漫射贴图类似,
三、Flowmap的制作:
1.Flowmap Painter:
非常好上手,非常好学.
注意:1.使用该工具得到的flowmap为线性空间下的颜色,不需要使用gamma矫正,Unity中需要取消勾选sRGB。 2.需要设置为无压缩或高质量
2.Hodini
(缺一些截图,暂时先不上了)