type
status
date
slug
summary
tags
category
icon
password
📝 效果示意图

实现原理
第一部分 螺旋纹理
螺旋纹理其实就是一张纹理图,我们既可以手绘实现,也可以通过程序化的方式实现,当然程序化的手段会更加灵活,并且我们可以快速地调节相关参数得到不同的效果;
在Unity的Shader Graph中,我们可以使用如下2个节点实现螺旋纹理:

上述使用的两个节点的说明如下:


对于Gradient Noise节点,还可以对其“Scale”输入进行额外的控制,例如创建一个Float变量连接到输入端,用于控制生成的噪声尺度
得到的效果是:

第二部分 随时间旋转
这个效果也是直接使用Time相关节点,对UV进行偏移即可实现:


第三部分 噪声的继续处理

经过Remap、One Minus和Power后,得到一个强度更大的噪声纹理
第四部分 将螺旋纹理与背景混合
赋予颜色的方法也有许多,这里我们仍然采用程序化的方式,将一张屏幕坐标图映射到一个奇怪的区间【1,-1】,使之产生颜色效果:
(仔细分析一下可以发现Screen Position这个节点的作用绝不仅仅是作为一种颜色贴图,后续要让噪声纹理能够与环境中的其他像素进行混合,就要用到屏幕后处理)

再与原来的噪声图相乘,赋上颜色:

将上述贴图与Screen Position进行混合,混合方法如下:

使用Add节点将原本映射到的【1,-1】区间重新加上【0,1】,就把屏幕坐标图和螺旋状纹理混合在一起了(具体原理目前还不是很理解,因此有必要留意这种“将自定义纹理与屏幕坐标混合”的技巧)
实际上这一步输出的图像也是作为一个UV值,会传到下一步进行处理的

将Scene Color节点对上一步得到的UV进行采样,然后就能与场景里的其他渲染物体进行颜色混合,接着开启渲染设置中的Transparent选项以及“Opaque Texture”选项,就能查看目前的效果了


第五部分 添加自发光
主要使用Fresnel节点并输出到Emission通道即可


最终效果

完整节点图

参考文章
- 作者:Damier
- 链接:https://notion-next-coral-eta.vercel.app/article/49fff090-b6a1-479d-84ec-cfcc509ee7d9
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。