Unity 扫光Shader
一、前言
今天我们来实现一个扫光Shader
1.1 思路
思路:我们可以用一张作为扫光的贴图,然后采样它的颜色叠加在原来的基础上,这样就有了光,接着运用_Time.y让采样的UV随着时间变化,这样扫光就能动起来
1.2 效果图
可以看到,扫光按我们所想移动了起来,另外我们还加了一个_RotateAngel变量,让扫光的方向可以调节
1.3 准备工作
1.3.1 扫光贴图
我们需要一张扫光的贴图作为材料,先附上贴图
1.3.2 贴图设置
这里需要把WrapMode设置为Repeat,因为我们算法中uv或加上当前的时间,让uv超出0~1的范围,把WrapMode设置为Repeat,这样保证超出0 ~ 1后还可以采样到纹理
 = "white" {}
_LightTex("LightTex",2D) = "white" {}
_LightColor("LightColor",Color) = (1,1,1,1)
_LightStrength("LightStrength",Range(1,10)) = 1
_Speed("Speed",Range(0,10)) = 1
_RotateAngel("RotateAngel",Range(0,360)) = 0
}
SubShader
{
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
stru