昨天在B站发现了重装战姬的印象曲。
突然想实现一下这种干扰的效果。
从画面上看,应该只是将图片的UV分段然后偏移。
这种效果一般UI上面会用的比较多,所以做成UI效果应该会比较好。
第一步
首先先从Unity官网下载当前Unity版本的builtin_shaders;
https://unity3d.com/get-unity/download/archive
Downloads -> Bulit in shaders
这一步是为了拿到Unity默认的UI/Default的shader源码,然后在它的基础上改。
在不改变该shader的基础上可以添加代码,可以应用很多Unity自带的UI效果,比如Mask。
Unity默认的UI Default里的参数大都是组件调用的,比如Mask组件会改写Stencil相关的属性来达到遮罩的效果,详细请搜模板测试。
Image组件的Color改变的也不是材质的Tint Color,从而在不更换材质的情况下减少了DC。
在UI/Default的shader基础上进行修改,可以“继承”UI的很多功能。
第二步
Shader "UI/ChannelNoise"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {
}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
_NoiseStrength("NoiseStrength", Range(