|
溶解材质
先说下新发现
上篇文章不是说HDRP的emission物理单位导致需要乘10w倍吗,我在shadergraph中找到了一个节点叫Emission Node,应该是HDRP独有的。
现在单位是Nits,熟悉显示器的朋友应该清楚,常见显示器的最大亮度不高于400Nits,强劲一点的HDR显示器也不会超过1000Nits
所以我把滑块的最大最小值重新修正了一遍,如果是想用在URP(LWRP)中的同学,可以自行修改(换成乘法就好)。
下面开始正文
灵感来源于Brackeys的youtube教程,但内容更加丰富。
溶解材质是游戏内能经常见到的:怪物死亡,消融模型,淡入淡出,都需要用到。
溶解在材质上分为两步
1. 模型逐步消失
2. 消失边缘发光
先来做模型消失
模型消失即为让模型沿着alpha切割,就是standard的Cutout模式
也就是图中的AlphaClip
默认AlphaClip为0.5,也就是说alpha中,0到0.5的位置会被切掉
现在需要一张用于切割的黑白Noise图。你可以自己做,放在Albedo的Alpha中,也可以用Noise节点来实时生成
目前自带的noise节点为这三个。我选择最后一个作为例子
可见模型被切割了。
现在我需要一个滑块,来控制这张Noise图,有如下变化。
最简单的做法是,加上一个范围是-1到1的滑块。
于是乎切割就做好了。
再加切割边缘光
边缘光更好理解,现在图片0.5是切割的边界。如果0-0.6为发光,0.5以下被切掉,那么发光地方不就成了0.5-0.6。这就是边缘光。
可以用Step这个节点给Alpha做遮罩,把边缘发光加到自发光贴图上,最终输出出去。
上面就是原视频的所有内容
但!我们还要往前!!
在视频里,我看到了一段参考,从上到下的溶解,并且溶解的颜色会变化。
这篇文章的最终目的就是这个。
先分析下如何做
如何取上下信息?
有两种方法:1.取模型本地的位置信息(Position节点)。2.UV。
这里我选择用UV来做。
因为第一套UV需要给贴图。所以模型展2U,正面映射。
这样,UV的V就能拿来做上下渐变图。
如何上下消融?
Alpha为1,肯定显示,Alpha为0,肯定隐藏。
Noise是一张不规则的黑白图片,
- 最黑的地方为0,0的位置想要显示,就得加1。
- 最白的地方是1,1的位置想要隐藏,就得减1。
所以我需要一张图有1到-1的渐变,显然右边那张图是我们想要的。
原图是线性增加的,可以看成图像y=x
而右图,设为y=ax+b,a是黑白渐变的强度。函数满足x=0.5时,y=0。很容易得出,b=-0.5a,所以y=ax-0.5a
照着函数连一下,即可得到我们想要的蒙蔽图。下面一步,便是让最后那张图能上下移动。
*最开始我想的是在最后一个节点上,加上一个滑块。但真正实验过后,你会发现行不通。因为最后一张图有高于1的值,用加上-1没法得到纯黑。而用clamp或saturate限制0-1,会导致渐变有问题。
所以我找了个取巧的办法。
y=2x-1
把渐变滑块加在x上。也就是y=a(x+m)-0.5a
当a等于2时候,m在0-1上滑动,正好会让图像有整个 y在-1到1 的渐变。
而当a大于2时,满足 y在-1到1 的m,也在0-1之间。
AlphaClip的是一个滑块,最小值为2
至此,上下溶解的蒙版制作完成。
至于颜色渐变,用UV的V,lerp两种颜色就好。
至此,本章完结
最后把noise悄悄换成了维诺图
下面是我的文件
文件分享share.weiyun.com
密码:xjqym9
使用方法:找个HDRP或着URP(LWRP),拖进去。我的文件夹下有预制体。记得调自发光强度。
下面是我的artstation地址:
https://www.artstation.com/luteli
相关阅读:从头学ShaderGraph :UV与基础材质
作者:Lute Li
专栏地址:https://zhuanlan.zhihu.com/p/99435201
|
|