当前位置: 首页 > news >正文

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滚动速度,和上一个采样的结果来相加,这样之后我们就得到了一个不再循环的扭曲图案。

最终效果

总结:

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

http://www.lryc.cn/news/452971.html

相关文章:

  • Linux驱动开发(速记版)--设备树插件
  • 代码报错后如何定位问题
  • Python数据可视化--Matplotlib--入门
  • 美国食品等级FDA认证测试介绍
  • Vue2如何在网页实现文字的逐个显现
  • mybatisplus的查询,分页查询,自定义多表查询,修改的几种写法
  • 括号匹配判断
  • 数据结构(栈和队列的实现)
  • Python批量处理客户明细表格数据,挖掘更大价值
  • NAND Flash虚拟层索引表机制
  • Spring Boot框架:新闻推荐系统开发新趋势
  • RK3568平台(opencv篇)opencv处理图像
  • 【移动端】Viewport 视口
  • PWM 模式
  • 模拟算法(3)_Z字形变换
  • Go语言实现长连接并发框架 - 任务执行流路由模块
  • Windows 编译 FFmpeg 源码详细教程
  • JavaCV 实现视频链接截取封面工具
  • 初识Linux · 进程替换
  • 项目-坦克大战学习-人机ai
  • YOLOv11改进 | Conv篇 | YOLOv11引入SKConv
  • 招联2025校招内推
  • 美容院管理创新:SpringBoot系统设计与开发
  • 文心一言 VS 讯飞星火 VS chatgpt (361)-- 算法导论24.3 3题
  • ArkTS 开发中,有两种网络请求
  • 记录一次病毒启动脚本
  • 2019~2023博文汇总目录
  • springboot项目配置部分依赖从私服拉取,部分从阿里云拉取
  • 返回索引对象中各元素的数据类型 pandas.Index.dtype
  • 通过freepbx搭建小型电话系统的过程