本文首发于“洪流学堂”微信公众号。
洪流学堂,让你学Unity快人几步。你好,我是你的技术探路者郑洪智,你可以叫我大智(vx: zhz11235)。
洪流学堂公众号回复节点
,获取ShaderGraph节点详解PDF文件(带目录)。
上次我们讲了ShaderGraph的配置,创建,编辑和在材质球上的使用,这节课我们通过一个实例来看一下如何用ShaderGraph快速创建一个全息效果。
这种全息效果是通过贴图的Offset随时间滚动产生的,来看下在ShaderGraph中如何制作吧。
1、创建一个PBR Graph
2、我们会用到一张全息的纹理贴图
3、创建一个Sample Texture 2D的Node,节点的Texture属性选择刚才下载的贴图
4、要让这张贴图滚动起来,要使用到Tiling And Offset节点,创建一个这个节点。将Tiling And Offset节点的Output和Sample Texture 2D的UV属性连接起来。现在你如果修改Tiling And Offset节点的Offset的Y值,就会看到贴图能向下滚动了!
5、那么如何让Offset自动变化呢,我们可以使用内置的Time节点。
创建Time节点并将Time(1)连接到Offset,这时候你会看到贴图会自动滚动了。
注意:这样其实会让Offset的X,Y同时滚动,由于贴图在X轴上是重复的,所以看不出来
6、这时候如果将Sample Texture 2D的输出RGBA(4)连接到PBR Master的节点Emission(自发光)上,就能看到效果了
但是这效果显然还不能达到我们的理想的效果。
7、我们想通过一个参数来控制滚动的速度。
- 添加一个Vector1的参数,命名为Speed,默认值设置0.1.
- 将这个参数拖到图中,创建一个Multiply(乘法)节点,然后将Time节点和Speed属性节点相乘,Output拖到Offset,如下如所示。
8、我们还想能控制这个全息投影的颜色。
- 添加一个颜色的属性
- 我们想让贴图中越黑色的部分颜色越深,白色的部分颜色越浅。
将颜色属性和Sample Texture 2D的输出RGBA(4)相乘,这样颜色会有一个渐变的效果。 - 将Multiply的Out拖到PBR Master节点的Albedo和Emission上
9、由于我们的贴图是一张RGB的灰度图,并没有带透明通道,所以我们需要自己来将透明通道做出来。
我们可以使用RGB的任意一个通道作为alpha值。同时需要将PBR Master的Surface设置为Transparent。
注意不能使用A通道,因为贴图本身并没有alpha通道,所以alpha通道的值会全是1。
10、最后我们还可以让这个全息效果更好一点:目前的效果比最开始的效果条纹会细一些,可以通过添加一个One Minus节点来解决(One Minus的作用的:输出结果为1-输入)
这样我们就大功告成了!就是文章开头的那个效果。
小结
本文通过全息效果的ShaderGraph,涵盖了输入属性、多个节点的知识。
后续会有更多的实例教程,关注洪流学堂公众号第一时间获取。
洪流学堂公众号回复节点
,获取ShaderGraph节点详解PDF文件(带目录)。
你有没有饱受shader折磨的同学?你可以把今天的内容分享给他,或许你能帮到他。