Unity Shader Graph 制作扫光效果

2022-08-29 16:13:03 浏览数 (2)

国际惯例先看效果:

用到的贴图:

创建一个新的PBR Graph,在Blackboard中添加以下属性:

1.Scan Texture(Texture 2D 类型):用于上面的扫光贴图

2.Scan Speed(Vector1 类型):用于控制扫光速度

3.Scan Width(Vector1 类型):用于控制扫光宽度

4.Scan Color(HDR类型 Color):用于控制扫光颜色

5.Scan Direction(Vector1 类型):用于控制扫光方向

用到的一些数学函数节点:

1. Lerp 插值函数节点,可以理解为数学函数类Mathf中的Lerp函数,Lerp(a, b ,t),例如a = 0, b = 10, t = 0.3,函数返回结果则为3

2. Exponential 指数函数节点,Exp(a) 例如a = 1,结果为e

3. Power 幂函数节点 Power(a, b) 例如a = 2,b = 3,则结果为8

首先创建Tiling And Offset节点,将其U、V值通过Scan Direction值进行插值运算,再将其结果通过Remap节点映射到[0, 3.14]取值范围,该结果暂时用a代表

创建Time节点与Scan Speed值相乘,以便通过该属性控制扫光速度,将结果与a值通过Add节点相加,再创建Sine正弦函数节点,将相加后的值传入,该结果用b代表

将Scan Width属性值通过Remap节点将取值范围[0, 10]映射到[10, 0],创建Exponential指数函数节点将结果传入,输出值用c代表,再通过创建Power幂函数节点计算Power(b,c)的值,结果用d代表

创建Sample Texture 2D节点,将Scan Texture属性连接其Texture节点,将输出中的R值与d相乘并通过Clamp钳制节点将取值范围限制在[0, 1]

将最终值与Scan Color属性值相乘连接至PBR Master中的Albedo节点:

最终完成,尝试更换扫光贴图看看效果:

调整宽度、方向等属性调试效果:

下面附上另一种扫光效果:

0 人点赞