欢迎光临散文网 会员登陆 & 注册

【2.8】flowmap的实现—流动效果实现

2023-09-01 22:22 作者:农民能对空  | 我要投稿


问题+:如何将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

(缺一些截图,暂时先不上了)

【2.8】flowmap的实现—流动效果实现的评论 (共 条)

分享到微博请遵守国家法律