自学内容网 自学内容网

UE4 材质学习笔记02(数据类型/扭曲着色器)

一.什么是数据类型

首先为啥理解数据类型是很重要的。一些节点的接口插槽只接受特定类型的数据,如果连接了不匹配的数据就会出现错误,有些接口可以接受任何数据类型,但是实际上只会使用到其中的一些。并且有时可以将多个数据流合并成一个来编写一个更高效的shader

1.数据类型介绍

Float:用于需要单一数据通道的事物,如金属度、高光度和粗糙度

Float2:带有两个通道,通常用于存储UV坐标

Float3:用于需要颜色或向量的东西,例如基础颜色和法线

Float4:用于存储带有Alpha的颜色

2.节点介绍

1.Append

可以将两个向量合并成一个新的向量(更高维度的)

2.AppendMany

用于将多个输入合并成一个数组,并且可以选择输出的通道

3.Mask

用于从一个向量中提取特定的分量,比如下面就分别提取了二维向量的RG通道

 4.Swizzle

从一个向量(如float2float3float4)中选择和重新组合特定的分量

5.Split Components

将一个向量的每个分量分离成单独的输出,但是这个节点只接受float3类型的输入,否则会报错

3.注意

要注意根节点的basecolor 只需要一个float3的值,如果输入了float4的值那么第四个值就会被忽略掉

二.扭曲着色器

当UV增加的时候,纹理会向左上角进行移动,可以用Time节点来控制UV滚动,同时通过一个二维向量控制两个分量的滚动速度

现在是均匀地调整每个UV坐标,但是我想要对每个像素的UV偏移是不同的,这样就需要引入噪波

这是一个噪波纹理,它的RGB分别是三个不同的噪声图

所以我们就可以将任意两个通道append到一个二维向量,然后对UV进行偏移,同时乘上一个很小的影响范围,例如0.03,就会有一个扭曲的效果,就像这样

但是目前还不是动态的,所以还要加上时间的影响,通过跟随时间变化的UV来对噪声贴图进行采样,但是即使是这样,我们的图案现在变化扭曲的有些重复,所以通过采样另外两个不同的噪声通道,并且给予不同的UV滚动速度,和上一个采样的结果来相加,这样之后我们就得到了一个不再循环的扭曲图案。

最终效果

总结:

这个方法用来做扭曲非常不错,可以用来做火焰的热浪,或者带有涟漪的水,可以用这个做折射效果,或者只是用来做某个在摇摆的物体,或者是做某个粒子系统。


原文地址:https://blog.csdn.net/Mr_Dongzheng/article/details/142702227

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!