wordpress 币,seo排名点击首页,东莞短视频seo需要多少钱,微信关注公众号还是一样的分为UI闪烁和物体闪烁#xff0c;其中具体可分为#xff1a;UI闪烁、物体闪烁与半透明闪烁
1#xff0c;UI闪烁
对于UI 还是一样的#xff0c;改写UI本身的shader#xff1a;
Shader UI/YydUIShanShder
{Properties{[PerRendererData] _MainTex(…
还是一样的分为UI闪烁和物体闪烁其中具体可分为UI闪烁、物体闪烁与半透明闪烁
1UI闪烁
对于UI 还是一样的改写UI本身的shader
Shader UI/YydUIShanShder
{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[Toggle]_Switch(Switch, Float) 0_value(Speed,Range(1,3)) 1_overlayCol(OtherColor,Color) (0.2146,1,0,0.6039)}SubShader{Tags{Queue TransparentIgnoreProjector TrueRenderType TransparentPreviewType PlaneCanUseSpriteAtlas True}Stencil{Ref[_Stencil]Comp[_StencilComp]Pass[_StencilOp]ReadMask[_StencilReadMask]WriteMask[_StencilWriteMask]}Cull OffLighting OffZWrite OffZTest[unity_GUIZTestMode]Blend SrcAlpha OneMinusSrcAlphaColorMask[_ColorMask]Pass{Name DefaultCGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0#include UnityCG.cginc
#include UnityUI.cginc#pragma multi_compile_local _ UNITY_UI_CLIP_RECT
#pragma multi_compile_local _ UNITY_UI_ALPHACLIPstruct appdata_t{float4 vertex : POSITION;float4 color : COLOR;float2 texcoord : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float4 vertex : SV_POSITION;fixed4 color : COLOR;float2 texcoord : TEXCOORD0;float4 worldPosition : TEXCOORD1;half4 mask : TEXCOORD2;UNITY_VERTEX_OUTPUT_STEREO};sampler2D _MainTex;fixed4 _Color;fixed4 _TextureSampleAdd;float4 _ClipRect;float4 _MainTex_ST;float _UIMaskSoftnessX;float _UIMaskSoftnessY;float _value;float4 _overlayCol;half _Switch;v2f vert(appdata_t v){v2f OUT;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);float4 vPosition UnityObjectToClipPos(v.vertex);OUT.worldPosition v.vertex;OUT.vertex vPosition;float2 pixelSize vPosition.w;pixelSize / float2(1, 1) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));float4 clampedRect clamp(_ClipRect, -2e10, 2e10);float2 maskUV (v.vertex.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);OUT.texcoord TRANSFORM_TEX(v.texcoord.xy, _MainTex);OUT.mask half4(v.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) abs(pixelSize.xy)));OUT.color v.color * _Color;return OUT;}fixed4 frag(v2f IN) : SV_Target{half4 color IN.color * (tex2D(_MainTex, IN.texcoord) _TextureSampleAdd);#ifdef UNITY_UI_CLIP_RECThalf2 m saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);color.a * m.x * m.y;
#endif#ifdef UNITY_UI_ALPHACLIPclip(color.a - 0.001);
#endifhalf _g dot(color.rgb, unity_ColorSpaceLuminance);//这部分是自定义处理的if (_Switch 1){fixed4 col _overlayCol;float t abs(sin(_Time.w * _value));col.a lerp(0, _overlayCol.a, t);color lerp(color, col, col.a);//将col叠加在color上}return color;}ENDCG}}
} 实现原理我们可以理解为在原有的图片上叠加了一层会随着时间变化而变化透明度的纯色。 和原image的shader相比基本没做太大改动。只是为了实现闪烁效果自定义了如下部分
//这部分是自定义处理的if (_Switch 1){fixed4 col _overlayCol;float t abs(sin(_Time.w * _value));col.a lerp(0, _overlayCol.a, t);color lerp(color, col, col.a);//将col叠加在color上}
2物体闪烁 原理相同实现代码如下
Shader YaDong/YydShanShader
{Properties{_MainTex(Texture, 2D) white {}[Header(twinkle)]_twinkleCol(闪光色,Color) (0.7735,0.7735,0.7735,1)_twinkleValue(闪烁 Speed,float) 1_middleValue(中间值,float) 0.5_volatilityValue(波动,float) 0.6}SubShader{Tags { RenderType Opaque }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work//#pragma multi_compile_fog#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;//UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex, _YydChangeInterval;float4 _MainTex_ST;float4 _twinkleCol;float _twinkleValue;float _middleValue;float _volatilityValue;v2f vert(appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);// UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag(v2f i) : SV_Target{// sample the texturefixed4 col tex2D(_MainTex, i.uv);float t abs(sin(_Time.w * _twinkleValue)* _volatilityValue) _middleValue;// 0.5;col.rgb lerp(col.rgb, saturate(col.rgb _twinkleCol.rgb), t);return col;}ENDCG}}
}3纯色半透明闪烁 与上述物体闪烁不同的是这个只是在颜色基础上加了半透明闪烁实现代码如下
Shader YaDong/YydGreenShader
{Properties{_MainTex(Texture, 2D) white {}_value(速度,Range(1,3)) 1_overlayCol(叠加色,Color) (0.2146,1,0,0.6039)}SubShader{//Tags { RenderType Opaque }Tags { Queue Transparent RenderType Transparent }zWrite offblend srcAlpha one//LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work//#pragma multi_compile_fog#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;//UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex, _YydChangeInterval;float4 _MainTex_ST;float _value;float4 _overlayCol;v2f vert(appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);// UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag(v2f i) : SV_Target{fixed4 col _overlayCol;float t abs(sin(_Time.w * _value));col.a lerp(0.3, _overlayCol.a, t);return col;}ENDCG}}
}