Unity2018新功能抢鲜 | ShaderGraph实战之全息效果

本文首发于“洪流学堂”微信公众号。
洪流学堂,让你学Unity快人几步

上次我们讲了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值,就会看到贴图能向下滚动了!

Tiling And Offset节点

5、那么如何让Offset自动变化呢,我们可以使用内置的Time节点。
创建Time节点并将Time(1)连接到Offset,这时候你会看到贴图会自动滚动了。

注意:这样其实会让Offset的X,Y同时滚动,由于贴图在X轴上是重复的,所以看不出来

6、这时候如果将Sample Texture 2D的输出RGBA(4)连接到PBR Master的节点Emission(自发光)上,就能看到效果了

第一次效果

但是这效果显然还不能达到我们的理想的效果。

7、我们想通过一个参数来控制滚动的速度。
1) 添加一个Vector1的参数,命名为Speed,默认值设置0.1.
2) 将这个参数拖到图中,创建一个Multiply(乘法)节点,然后将Time节点和Speed属性节点相乘,Output拖到Offset,如下如所示。

可以看到滚动的速度变慢了

8、我们还想能控制这个全息投影的颜色。
1) 添加一个颜色的属性
2) 我们想让贴图中越黑色的部分颜色越深,白色的部分颜色越浅。
将颜色属性和Sample Texture 2D的输出RGBA(4)相乘,这样颜色会有一个渐变的效果。
3) 将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,涵盖了输入属性、多个节点的知识。
后续会有更多的实例教程,关注洪流学堂公众号第一时间获取。

你有没有饱受shader折磨的同学?你可以把今天的内容分享给他,或许你能帮到他。

本文的源码可以通过洪流学堂公众号回复 全息 获取。


Unity:世界领先的游戏,VR/AR引擎
《郑洪智的Unity2018课》,倾尽我8年的开发经验,结合最新的Unity2018,带你从入门到精通。
目前预售拼团,5.5折!

猜你喜欢

转载自blog.csdn.net/zhenghongzhi6/article/details/80013400