UE4 材质学习笔记02(数据类型/扭曲着色器)
一.什么是数据类型
首先为啥理解数据类型是很重要的。一些节点的接口插槽只接受特定类型的数据,如果连接了不匹配的数据就会出现错误,有些接口可以接受任何数据类型,但是实际上只会使用到其中的一些。并且有时可以将多个数据流合并成一个来编写一个更高效的shader

1.数据类型介绍
Float:用于需要单一数据通道的事物,如金属度、高光度和粗糙度
Float2:带有两个通道,通常用于存储UV坐标
Float3:用于需要颜色或向量的东西,例如基础颜色和法线
Float4:用于存储带有Alpha的颜色
2.节点介绍
1.Append
可以将两个向量合并成一个新的向量(更高维度的)

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

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

4.Swizzle
从一个向量(如float2、float3或float4)中选择和重新组合特定的分量

5.Split Components
将一个向量的每个分量分离成单独的输出,但是这个节点只接受float3类型的输入,否则会报错
3.注意
要注意根节点的basecolor 只需要一个float3的值,如果输入了float4的值那么第四个值就会被忽略掉
二.扭曲着色器
当UV增加的时候,纹理会向左上角进行移动,可以用Time节点来控制UV滚动,同时通过一个二维向量控制两个分量的滚动速度

现在是均匀地调整每个UV坐标,但是我想要对每个像素的UV偏移是不同的,这样就需要引入噪波
这是一个噪波纹理,它的RGB分别是三个不同的噪声图

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

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

总结:
这个方法用来做扭曲非常不错,可以用来做火焰的热浪,或者带有涟漪的水,可以用这个做折射效果,或者只是用来做某个在摇摆的物体,或者是做某个粒子系统。
相关文章:
UE4 材质学习笔记02(数据类型/扭曲着色器)
一.什么是数据类型 首先为啥理解数据类型是很重要的。一些节点的接口插槽只接受特定类型的数据,如果连接了不匹配的数据就会出现错误,有些接口可以接受任何数据类型,但是实际上只会使用到其中的一些。并且有时可以将多个数据流合并成一个来编…...
Linux驱动开发(速记版)--设备树插件
第六十八章 设备树插件介绍 Linux 4.4之后引入了动态设备树,其中的设备树插件(Device Tree Overlay)是一种扩展机制,允许在运行时动态添加、修改或删除设备节点和属性。 设备树插件机制通过DTS(设备树源文件࿰…...
代码报错后如何定位问题
文章目录 一、查看终端报错Exception二、百度三、问 一、查看终端报错Exception 代码报错时,终端一般都会有xxxException异常提示,或者exception、error…等字样提示,就顺着这些关键字提醒找到异常即可。 二、百度 不知道这个英文的异常是…...
Python数据可视化--Matplotlib--入门
我生性自由散漫,不喜欢拘束。我谁也不爱,谁也不恨。我没有欺骗这个,追求那个;没有把这个取笑,那个玩弄。我有自己的消遣。 -- 塞万提斯 《堂吉诃德》 Matplotlib介绍 1. Matplotlib 是 Python 中常用的 2D 绘图库&a…...
美国食品等级FDA认证测试介绍
美国FDA认证概览 美国食品和药物管理局(FDA)是负责监管食品、药品、医疗设备和化妆品等的联邦机构,以确保这些产品对公众健康和安全的影响。FDA认证在美国属于强制性认证,对产品的安全性和质量有着严格的要求。通过FDA认证&#…...
Vue2如何在网页实现文字的逐个显现
目录 Blue留言: 效果图: 实现思路: 代码: 1、空字符串与需渲染的字符串的定义 2、vue的插值表达式 3、函数 4、mounted()函数调用 结语: Blue留言: 在国庆前夕,突发奇想,我想…...
mybatisplus的查询,分页查询,自定义多表查询,修改的几种写法
使用mybatisplus的Db类简化写法 使用静态调用的方式,执行CRUD方法,避免Spring环境下Service循环注入、简洁代码,提升效率需要项目中已注入对应实体的BaseMapper完整使用方式见官方测试用例:官方测试用例地址对于参数为Wrapper的&…...
括号匹配判断
本题实现求表达式中括号是否匹配。只需判断表达式中括号(本题中只会出现三种括号,分别是小括号,中括号和大括号)是否匹配,表达式中可以有其他值也可没有。 函数接口定义: int match (char *exp); 其中 …...
数据结构(栈和队列的实现)
1. 栈(Stack) 1.1 栈的概念与结构 栈是一种特殊的线性表,其只允许固定的一段插入和删除操作;进行数据插入和删除的一段叫做栈顶,另一端叫栈底;栈中的元素符合后进先出LIFO(Last In First Out&…...
Python批量处理客户明细表格数据,挖掘更大价值
批量处理 .xls 数据并进行归类分析以挖掘内在价值,通常涉及以下步骤: 读取数据:使用 pandas 库读取 .xls 文件。数据清洗:处理缺失值、异常值、重复值等。数据转换:对数据进行必要的转换,如日期格式统一、…...
NAND Flash虚拟层索引表机制
NAND Flash虚拟层的索引表用于建立逻辑块与数据块、日志块之间的关系,用于NAND Flash虚拟层在运行过程中的读写、擦除操作;由于NAND Flash虚拟层采用集中索引的方式,因此在NAND Flash虚拟层启动时需要在NAND Flash存放索引表区域扫描并确定NAND Flash中存…...
Spring Boot框架:新闻推荐系统开发新趋势
3系统分析 3.1可行性分析 通过对本新闻推荐系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本新闻推荐系统采用JAVA作为开发语言,Spring Boot框…...
RK3568平台(opencv篇)opencv处理图像
一.颜色转换 cv2.cvtColor()函数功能: 将一幅图像从一个色彩空间转换到另一个色彩空间。 函数原型: cv2.cvtColor(src,code,dst=None,dstCn=None) 参数定义: src:要转换的源文件 code,转换的色彩空间,在 opencv 中有超过 150 种颜色空间转换方法,但是经常用的只有 B…...
【移动端】Viewport 视口
1. 什么是 Viewport(视口)? Viewport(视口)是指浏览器中用户可见的那部分网页内容的区域,简单来说,它是用户当前看到的网页的“窗口”区域。在不同的设备上,Viewport 的大小会有所不…...
PWM 模式
一、介绍 PWM(脉宽调制,Pulse-width modulation)是一种通过调节脉冲信号的宽度来控制电能输出的方法。PWM是一种方波信号,通常在电子和电气工程中用于调节功率输送,控制电机速度,调节LED亮度,以…...
模拟算法(3)_Z字形变换
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 模拟算法(3)_Z字形变换 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 题目链…...
Go语言实现长连接并发框架 - 任务执行流路由模块
文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,上篇博客中我们实现了任务执行流上下文部分,接下来我们实现一下任务执行流的路由模块,基于该模块可以实现将消息转发到相应注册的任务执行流中进行处理 接…...
Windows 编译 FFmpeg 源码详细教程
FFmpeg FFmpeg 是一个开源的多媒体框架,它包括了一整套工具和库,可以用来处理(转码、转换、录制、流式传输等)音频和视频。FFmpeg 支持广泛的音视频格式,并且可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。 FFmpeg 的主要组件包括: ffmpeg:这是一个命令行工…...
JavaCV 实现视频链接截取封面工具
引入必要依赖 <!--JavaCV--> <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.7</version> </dependency> <dependency><groupId>cn.hutool</groupI…...
初识Linux · 进程替换
目录 前言: 1 直接看代码和现象 2 解释原理 3 将代码改成多进程版本 4 认识所有函数并使用 前言: 由前面的章节学习,我们已经了解了进程状态,进程终止以及进程等待,今天,我们学习进程替换。进程替换我…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
使用VMware克隆功能快速搭建集群
自己搭建的虚拟机,后续不管是学习java还是大数据,都需要集群,java需要分布式的微服务,大数据Hadoop的计算集群,如果从头开始搭建虚拟机会比较费时费力,这里分享一下如何使用克隆功能快速搭建一个集群 先把…...
使用homeassistant 插件将tasmota 接入到米家
我写一个一个 将本地tasmoat的的设备同通过ha集成到小爱同学的功能,利用了巴法接入小爱的功能,将本地mqtt转发给巴法以实现小爱控制的功能,前提条件。1需要tasmota 设备, 2.在本地搭建了mqtt服务可, 3.搭建了ha 4.在h…...
7种分类数据编码技术详解:从原理到实战
在数据分析和机器学习领域,分类数据(Categorical Data)的处理是一个基础但至关重要的环节。分类数据指的是由有限数量的离散值组成的数据类型,如性别(男/女)、颜色(红/绿/蓝)或产品类…...
