Unity3D Shader Graph制作全息效果

作者:二三   2019-12-25 11:22:11   594

Unity版本:2018.4.11c1


1. 新建Shader-->PBR Graph文件,并双击在Shader Graph中打开;


2. 修改基本颜色:新建color参数并选择基本色,将参数拖到面板上连接至PBR Master上的Albedo属性上:




3. 使用纹理来控制透明度:新建纹理(Texture2D)参数,并选择纹理;由于PBR-->Alpha通道不接收纹理类型的输入,所以将纹理使用sample texture2D节点转换后再连接,并将模型改为透明:


4. 球形不好看效果,可以在右下角的预览面板右键-->Custom Mesh换个模型;


5. 此时的纹理是覆盖在模型上的,如果不需要覆盖在模型上而是需要从上到下相对于我们的视角覆盖在空间上再执行这一步操作:
            A. 新建节点Tiling And Offset,并把此节点的Out连接到刚才创建的sample texture2D面板的UV上;
            B. 将Tiling And Offset的UV脱出连接到新节点Screen Position上;
            C. 新建一个Vector2参数(可以设置x:1,y:3,按需求设置)来控制平铺,并拖入工作区连接到tiling的输入上;
            D. 控制偏移的y值可以制造滚动效果,我们可以设置使它随时间动:新建时间节点Time和乘法节点Multiply,并新建一个vector 1参数来与Time相乘达到控制滚动速度的效果。



6. 此时已经大体有全息的效果了。我们可以通过添加发光部分来增强效果:
            A. 新建color参数,Mode修改为HDR,再选择颜色设置强度,并放置到工作区;
            B. 新建Fresnel effect节点,它可以产生环形渐变的效果;
            C. 新建乘法节点Multiply,将color参数和Fresnel effect节点连接上去相乘;
            D. 将乘法节点的Out连接到PBR Master的Emission上。



7. 如果要给纹理线条也加上发光:sample texture2D面板的RGBA上再拉出一个输出到新建节点One Minus(接收一个纹理并把它的值翻转)上,再将这个One Minus节点的输出拉到新建节点Multiply上,把参数中的基本色拖到工作区中作为Multiply节点的另外一个参数。而Multiply节点的Out也想要链接到PBR Master的Emission上,所以我们先把上一步中和Emission链接的线删除掉,然后创建一个Add节点,将上一步中的乘法节点Multiply和这步的乘法节点Multiply链接到Add节点的输入上,最后将Add节点的输出链接到PBR Master的Emission上。



8. 添加闪烁光。
            A. 新建时间节点,链接到新建节点Random Range:seed(2)上;
            B. Random Range的Out链接到新建节点Comparison(比较)上Comparison属性选择Greater;
            C. Comparison的Out链接到新建节点Branch上;
            D. Branch的Out链接的新建节点Multiply上,将上一步中的Add的Out再拉一条链接到Multiply的另一个输入;
            E. Multiply的Out链接到PBR Master的Emission上。



9.完成,效果如下:



热门文章 关于前台使用ajax后台使用PhpSpreadsheet从数据库导出excel 对于Laravel Blade模板转义html标签的记录 PHP-文件上传 去除隐藏字符—— PHP-验证码制作
评论成功!
评论内容不能为空

tips:仅支持jpg,jpeg,png格式图片。