游戏开发技术论坛

 找回密码
 立即注册
搜索
查看: 1990|回复: 0

从头学ShaderGraph :护盾材质

[复制链接]

1万

主题

1万

帖子

3万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
36572
发表于 2020-3-19 11:38:21 | 显示全部楼层 |阅读模式
这次来做喜闻乐见的护盾,案例文件会放在文章底部。还有,走过路过帮我来unity connect收藏点赞吧。

https://connect.unity.com/p/cong ... ph-5-hu-dun-cai-zhi

灵感来源于Brackeys的youtube教程,但内容更加丰富。

首先创建一个Unlit Graph,将shader设置成Transparent,要不然没法透光。

1.jpg

由于护盾需要双面+透明,ShaderGraph又没法关掉ZWrite。所以我做了个正反两面的球模型,来实现双面护盾。

护盾可以被拆解成三部分。

  • 模型切割处发光
  • 模型边缘发光
  • 贴图区域发光


2.jpg

1.模型切割遮罩

在shaderforge中,有现成的这个节点。名字叫depth blend。

3.jpg

但在shadergraph搜索Depth,只能找到Scene Depth。不过没有关系,我们自己造。

4.jpg

用视线空间的Scene Depth减去Screen Position的alpha。(我想了半天没搞懂是怎么算出来的,有好心人告诉我原理吗。)

算出来边缘切割的遮罩,由于黑白反了,所以One minus一下。再选个护盾自发光颜色。

5.jpg

2.模型边缘遮罩

标准的菲涅尔。

shadergraph有自带的菲涅尔节点Fresnel Effect。当然你也可以自己点乘出来。

6.jpg

3.贴图遮罩

需要蜂巢状遮罩,所以做了一张六边形的四方连续贴图。

7.png

用滑块做UV Tiling,time加到offset上做UV动画。

8.jpg

由于球模型,顶部和底部UV会拉伸严重。

9.jpg

所以在shader中用sinV做遮罩,使贴图只影响球中间部位。

10.jpg

至此三个区域的遮罩制作完成。

4.颜色

纯色护盾未免有些单调。于是用菲涅尔做遮罩,挑选内外两种颜色混合

11.jpg

最后遮罩连接alpha,颜色连接color

本章结束,来张动图。

gifhome_600x450_1s.gif

都看到这里了,点赞收藏吧。

下面是我的文件

链接:https://share.weiyun.com/58mRhnO

密码:thtw3e

使用方法:找个HDRP或着URP(LWRP),拖进去。我的文件夹下有预制体。

我的环境:Unity2019.3.0f1 HDRP 7.1.6 ShaderGraph 7.1.6

下面是我的artstation地址:

https://www.artstation.com/luteli

当然你也能看看我原来写的文章

https://www.zhihu.com/people/lute-li/posts

相关阅读:
从头学ShaderGraph :UV与基础材质
从头学ShaderGraph:雪材质

作者:Lute Li
专栏地址:https://zhuanlan.zhihu.com/p/109547098

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2023-2-5 22:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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