用一张图片的a通道表示转场过程中的进度变化
图片导入时需要选这个
1,复制一个unity自带的urp unlit shader,在此基础上修改
2,新增以下属性
Mask控制转场的形式,修改Threshold控制转场进度,Fade控制渐变区域影响大小
3,在片元着色器中设置颜色时添加以下代码(采样a通道的值与threshold比较,判断是否改成黑色)
float4 mainTex0 = i.color * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);
float4 cc = SAMPLE_TEXTURE2D(_Mask, sampler_Mask, i.uv);
//使用mask图片的a通道表示图片各位置的阈值
float c = cc.a;
float4 mainTex = mainTex0;
if(c>_Threshold)
{
if(c<_Threshold+_Fade)
{
float f = (c-_Threshold)/_Fade;
mainTex=mainTex*f*f;
}
}
else
{
mainTex.r =0;
mainTex.g =0;
mainTex.b =0;
}
mainTex.a = 1;
4,应用到背景图,转场时根据进度修改Threshold属性
效果演示:
Shader转场效果演示