- Home /
Customed shader for uGUI shows nothing on iOS,but is correct on Android and Windows
I write a shader to display a scroll-like image with transparent alpha on uGUI.It shows absolutely good on Windows and Android platform.But it shows nothing on iOS.I don't know what part of it is incompatible with iOS,or does it has something to do with iOS version?
Shader "AB/GFX/soft alpha scroll"
{
Properties
{
_MainTex("Main Texture (RGB)", 2D) = "white" {}
//_AlphaTex("Alpha Texture (Gray)", 2D) = "white" {}
_Slider("Slider",Range(0,1)) = 1
_GradientWidth("Gradient Width",Range(0,200)) = 30
}
SubShader
{
Tags
{
"Queue" = "Transparent+999"
"ForceNoShadowCasting" = "True"
"IgnoreProjector" = "True"
"RenderType" = "Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Pass
{
ColorMask RGBA
Lighting Off
Fog {Mode Off}
Cull Off
ZWrite Off
ZTest LEqual
AlphaTest Off
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile RIGHT_2_LEFT LEFT_2_RIGHT UP_2_BOTTOM BOTTOM_2_UP
#include "UnityCG.cginc"
struct appdata_t
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
sampler2D _MainTex;
half4 _MainTex_ST;
//sampler2D _AlphaTex;
fixed _Slider;
half _GradientWidth;
v2f vert(appdata_t v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.texcoord = v.texcoord;
o.texcoord = TRANSFORM_TEX (v.texcoord, _MainTex);
return o;
}
half4 frag(v2f i) : SV_Target
{
float4 color = tex2D(_MainTex, i.texcoord);
fixed alpha = 1;
#if RIGHT_2_LEFT
if((i.vertex.x > _ScreenParams.x * (1 - _Slider)) && (i.vertex.x < (_ScreenParams.x * (1 - _Slider) + _GradientWidth)))
{
alpha *= ( i.vertex.x - _ScreenParams.x * (1 - _Slider)) / _GradientWidth;
}
if( i.vertex.x >= _ScreenParams.x * (1- _Slider) + _GradientWidth)
{
alpha *= 1;
}
if( i.vertex.x <= _ScreenParams.x * (1- _Slider))
{
alpha *= 0;
}
#endif
color.a *= alpha;
//_Slider
return color;
}
ENDCG
}
}
Fallback "Mobile/Particles/Additive"
CustomEditor "UIScrollMaterialInspector"
}
Comment