TA-Shader-文件 在UE4中构建彩虹着色器-薄膜干涉-镭射
发布于
2019-4-11
5540
4
TA资源类型
TA资源类型: 算法思路 效果图 
shader资源类型: 虚幻蓝图节点 
适用引擎: 虚幻 
资源介绍: -

您需要 登录 才可以下载或查看,没有账号?注册

x

James Emory分享了他在UE4中制作的Iridescence Shader的详细分类。


1.jpg


介绍

我是James Emory,我现在已经是一名独立/自由开发人员已有5年了。 我最初是在Photoshop工作的纹理艺术家,然后转移到Substance Designer,这仍然是我最喜欢的程序之一。 几年前,我转向技术艺术,因为我不喜欢建模,并认为学习着色器是纹理化的下一个合乎逻辑的步骤。 我目前在即将上映的电脑恐怖游戏Lunacy:Saint Rhodes担任技术艺术家。

Iridescence Shader in UE4

2.jpg





目标

我开始为一个工作在ARK mod上的客户端构建这个彩虹色着色器,他们需要复制那种传统的甲壳虫外观。在Polycount论坛上有一个非常科学准确的彩虹色着色器,这是我的第一个方法,但它有其公平的问题,因为它是用虚幻的自定义HLSL节点编写的(由于ARK的引擎版本相当不容易而且它远非艺术家友好。在这一点上,我知道我需要一种可以在没有HLSL的旧引擎版本上工作的自定义方法,这导致了一个着色器,它可以产生与Polycount版本类似的结果,同时以完全不同的方式构造。
工作策略

首先,我将简要介绍一下我们将要构建的内容,然后解释它是如何工作的。首先,将有5个材料函数:3个主函数和2个辅助函数。产生颜色图案的3种方法是色调偏移,罗德里格斯旋转和zucconi6光谱。 3个主要功能的前半部分完全相同,后半部分特定于生成的颜色方法。





因此,我最初的方法是通过基于UV的色调偏移处理彩虹色,因为我想尝试创建没有预烘烤纹理的颜色。 后来我将其扩展为包括UV不可知方法。 使用色调偏移产生彩虹渐变是我多年前提到的一个技巧,在这里使用它似乎是一个很好的应用。 最初,这种方法只有在我适应它之前才受到UV限制,而没有这种限制。 话虽这么说,3种方法中有2种包含用于在UV / 3D坐标中工作的开关,而Rodrigues仅在3D空间中工作。

在将其扩展到现在的系统之前,这是我的初始原型图。




这是应用于测试网格的结果。






这是一个良好的开端,虽然还不够,但是当我觉得自己走在正确的轨道上时,它仍然是一个继续前进的灵感。 所以我开始添加功能,例如无紫外线方法和光源支持。
基金会

首先,我们必须通过获得像素法线(或转换为世界空间的指定法线)和相机矢量的点积来生成类似菲涅耳效果。 从那里,我们生成一个半矢量,传统上用于镜面反射高光,但在这种情况下,我们使用它来确保彩虹色不会一次性应用到任何地方,而是基于指定光的方向 资源。




这是3个主要功能中的每一个的前半部分。 我现在要做的是覆盖2个辅助函数,然后返回完成3个主要函数。
助手功能

第一个辅助函数是Rodrigues旋转公式。 我在UDK Polycount论坛上遇到过这个问题,所以对发布它的用户有所了解。 给定旋转轴和旋转角度,该公式旋转欧氏矢量。 更多信息在这里。





将其实现为自己的main函数如下所示:




接下来是zucconi6渐变功能,这将产生最佳的颜色效果,因此这是我最喜欢的3种方法中的一种。此函数以Alan Zucconi命名,Alan Zucconi是为此渐变创建代码的人。我强烈建议阅读他关于薄膜的系列,改进彩虹以及他提出的任何其他内容,因为他很棒。

现在,他在该文章中提供的代码专门用于Unity和Shadertoy,我正在使用UE4。虽然您可以使用自定义HLSL节点将Shadertoy代码移植到UE,但由于它具有辅助功能,这被证明非常烦人。我最终做的只是将Shadertoy代码移植到UE的节点图中,得到了一个非常相似的结果,我很满意。

我不会提供这方面的屏幕截图,因为某些节点的颜色值非常具体,并且无法将所有这些信息包含在一个图形屏幕截图中,所以我所做的就是为该函数创建了一个pastebin链接。您所要做的就是按Ctrl + A,Ctrl + C查看该页面底部的文本,然后按Ctrl + V进入图表,它将立即显示出来。

这是代码生成的渐变。




这就是如何将函数实现到自己的主函数中:





最后,我们有了hueshift方法。 这是我尝试的第一种方法,UV版本是我在原始帖子/视频中应用于汽车的版本。




所以这就是所有功能,这就是你如何将一个功能实现到一个材料中。 对于半矢量(光源支持),您可以将光源的旋转应用于蓝图内的参数集合。 请记住,这仅适用于一盏灯。




就汽车而言,我使用了UV绑定函数类型(使用add而不是乘以基色)并从函数中获得了一些非常好的结果。 在我看来,这是功能闪耀的地方。



z6彩虹色的最终结果应用于材质


加起来

总而言之,这只是简单的相机/法线向量+光线支持被送入渐变,因此在一天结束时,您可以使用UE的曲线工具创建任何您想要的渐变,并提供这些主要功能的前半部分 进入曲线并拥有你想要的任何颜色。 话虽这么说,能够使用这些功能动态生成不同的颜色是一个非常大的便利,至少对我来说。






参与人数 3 元素币 +12 活跃度 +18 扩散 +100
影视、动画技术宅

使用道具 举报 登录

回复 <
酱油别走  发表于 2019-4-11 10:47:06  
2#
回复 收起回复
使用道具
qq_……_SWH  发表于 2019-4-11 14:20:52  
3#
谢谢分享
回复 收起回复
使用道具
黄继锋  发表于 2019-9-25 18:04:00  
4#
上次见过这样的彩虹材质但觉得按照上述说明看着复杂如果只是用Reflection Vector链接一个七彩色就能出这样的效果,那何乐不为?
回复 收起回复
使用道具
书臣  发表于 2023-2-21 19:26:44  
5#
太牛B了。这个工具真的是很好。可惜不太会用呀。
回复 收起回复
使用道具

快来发表你宝贵的意见吧!

横竖 实名

通过了实名认证的内容创造者

BDGeneralist

主题
80
精华
13
超神
0
扩散
90
微金
1682
智慧
3
余额
22
在线时间
5081 小时

绿色药水 学徒法袍 长剑 长枪 火元素

快速回复 返回顶部 返回列表