Unity Shader Graph 故障艺术

2022-08-29 16:17:17 浏览数 (3)

故障效果越来越多的被应用于游戏开发,将事物发生故障的现象进行加工,形成了一种新的风格。本文实现了一个手电筒的故障效果,效果图如下,模型用的是Asset Store资源商店里的免费资源SciFi HandLight Free:

创建一个新的PBR Graph,创建以下属性:

1. Main Texture(Texture 2D):主贴图

2. Normal Texture (Texture 2D) :法线贴图

3. Emission Texture(Texture2D):发光贴图

4. Metallic Texture(Texture2D):金属度贴图

5. Emission Color (HDR 类型Color):用于控制发光的颜色

6. Malfunction Rate(Vector1):用于控制故障发生的比率,用Slider类型将取值范围限制到[0, 1]

首先需要创建四个Sample Texture 2D节点,用于各个贴图

Main Texture、Normal Texture、Metallic Texture连接的Sample Texture 2D节点直接输出到PBR Master主节点中的Albedo、Normal、Metallic,效果的实现主要通过Emission节点。创建一个Rangdom Range随机值节点,我们通过随机的比率实现灯光的闪烁,Speed的属性用Time节点来输入,最小值取0,最大值取1:

将上面Random Range的输出值与Malfunction Rate故障率进行比较,如果大等于该值则取1,表示不发生故障,否则取0,表示发生故障,灯熄灭,值比较通过Comparison节点实现,判断通过Branch分支节点实现:

将Branch节点输出值与Emission Color属性值相乘,再与Emission Texture连接的Sample Texture 2D的节点输出值相乘输出到PBR Master中的Emission节点,最终实现:

在Inspector面板调整材质的属性,当Malfunction Rate为0时,灯常亮,不会发生故障,为1时灯常灭,完全故障:

0 人点赞