UE4 材质学习笔记06(布料着色器/体积冰着色器)

embedded/2024/10/18 0:28:09/

一.布料着色器

要编写一个着色器首先是看一些参考图片,我们需要找出一些布料特有的特征,下面是一个棉织物,可以看到布料边缘的纤维可以捕捉光线使得边缘看起来更亮

下面是缎子和丝绸的图片,与棉织物有几乎相反的效果,表面面对相机或者光源的时候比边缘更亮。所以我们要模仿两种现象,一种是边缘比中间亮,另一种是直视表面比边缘亮

这个技术在一次SIGGRAPH会议上被提出。下面是要用到的公式,这也是我们今天要模拟的东西。

通过着色器模仿布料的外观,但是并不能模拟布料的物理性质。

首先需要一个菲涅尔项,菲涅尔项是用来计算观察向量和表面法线之间的点积,虽然有现成的节点可以给我们使用,但是我们还是选择自己去实现它,因为我们想对它进行更多的自定义。

首先找到Camera Vector和Pixel NormalWS节点,进行点积之后连接到BaseColor,可以看到中间是亮的,然后到边缘逐渐变暗

然后我们可以用1-x节点,就会变成中间是黑的,到边缘逐渐变亮,这样我就可以让边缘变亮或者是中间变亮。

 但是还需要添加一个power节点来调整效果的应用程度。这样颜色衰减就快很多了。通过指数就可以调整颜色衰减的快慢了,同时可以在加一个乘法节点用来调整亮度。

然后我们只需要复制上面的节点,但是不要1-x节点,就可以得到中间亮边缘暗的效果,然后把这二者相加,这样边缘和中间都亮了,但是这样做的好处是可以通过四个参数创建各种不同的布料效果。可以制作缎子,丝绸,牛仔布等等。

例如下面是分别模仿棉织物和丝绸的效果,只需要修改下面的四个参数

二.体积冰着色器

当我们的相机向量移动时,表面下的纹理也随之移动,所以看起来就像是有某种体积

也就是像下面的这种效果,我们要做的就是得到紫色的向量,也就是透射向量,然后可以把它加紧UV坐标里,并且让UV在相机向量移动时,于表面下滑动

连接接待你以后看起来就像是,我在透过一块立方体玻璃往后看,但是现在看起来纹理离我的表面太远了,并且发生的偏移明显太强了

解决办法就是增加节点用来控制深度以及偏移量,下图中的100就是将控制我想要使用的深度,然后取分辨率的倒数控制偏移量

现在看起来纹理就在表面之下,旋转物体时,噪波纹理会在立方体的下面(或者说里面)产生

但是我们知道冰并不是光滑的,所以要用法线贴图替换原来的(0,0,1),然后因为我们不想要每个像素有均匀的偏移,所以可以用一个纹理控制偏移,现在的效果看起来就非常棒了


http://www.ppmy.cn/embedded/126908.html

相关文章

基于Python+sqlite3实现(Web)图书管理系统

项目名称:LibraryManagementSystem 一、系统目标 使用了Python作为语言,以django为后台,sqlite3作为数据库,UI基于bootstrap的图书管理系统,模拟图书管理的真实场景,考虑客观需求,界面简洁、操作方便&…

麒麟信安CentOS安全加固案例获评中国信通院第三届“鼎新杯”数字化转型应用奖

“鼎新杯”数字化转型应用大赛,由中国通信标准化协会主办、中国信息通信研究院承办,以落实国家“十四五”规划关于“加快数字化发展,建设数字中国”的总体要求为目标,意在打造一批具有产业引领与推广应用效应的企业数字化转型应用…

操作教程|基于DataEase用RFM分析法分析零售交易数据

DataEase开源BI工具可以在店铺运营的数据分析及可视化方面提供非常大的帮助。同样,在用于客户评估的RFM(即Recency、Frequency和Monetary的简称)分析中,DataEase也可以发挥出积极的价值,通过数据可视化大屏的方式实时展…

SpringCloud网关聚合knife4j方案

微服务开发中想将Spring-Cloud-Gateway网关聚合knife4j,形成一个统一入口方便查阅的开发辅助接口文档,并且将Swagger抽取成一个公共模块,那么我们可以参考以下的做法 约定: Java Version:11.0.24 Spring Boot&#xff…

YoloV8改进策略:BackBone改进|CAFormer在YoloV8中的创新应用,显著提升目标检测性能

摘要 在目标检测领域,模型性能的提升一直是研究者和开发者们关注的重点。近期,我们尝试将CAFormer模块引入YoloV8模型中,以替换其原有的主干网络,这一创新性的改进带来了显著的性能提升。 CAFormer,作为MetaFormer框架下的一个变体,结合了深度可分离卷积和普通自注意力…

解决ubuntu 下 VS code 无法打开点击没反应问题

从Ubuntu 22.04 升级到ubuntu 24.04 后,发现Vsode无法打开,不论是点击图标,还是terminator里面运行code 可执行程序,均没有反应。debug如下: 提示权限不够。 解决方案: sudo sysctl -w kernel.apparmor_restrict_unp…

Mysql(1)—简介及Windows环境下载安装

一、关于Mysql 1.1 简介 MySQL是一个流行的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行操作。MySQL由瑞典MySQL AB公司开发,后来被Sun Microsystems收购,最终成为Oracle公司的…

题目:1297. 子串的最大出现次数

> Problem: 1297. 子串的最大出现次数 题目:1297. 子串的最大出现次数 题目描述 给定一个字符串 s,要求找到满足以下条件的任意子串的出现次数,并返回该子串的最大出现次数: 子串中不同字母的数目必须小于等于 maxLetters。…