Custom shader not working in Android - GLSL link error: The number of vertex shader storage blocks

Hello, I am having problems when displaying an image that has a transparency shader applied in android.

The shader in the editor looks correct and works without any problem, but when we compile the project for android and execute it, the shader stops working and the image cannot be seen on mobile, maybe the shader crash and now the image is fully transparent.

Error logs from my device:

2022-07-28 10:39:55.665 24694-24853/app.dev E/SchedPolicy: set_timerslack_ns write failed: Operation not permitted
2022-07-28 10:39:56.481 24694-25852/app.dev I/Adjust: Buffered event ‘GameArea’
2022-07-28 10:39:56.774 24694-24979/app.dev E/Unity: -------- GLSL link error:  The number of vertex shader storage blocks (1) is greater than the maximum number allowed (0).
2022-07-28 10:39:56.774 24694-24979/app.dev D/Unity: Note: Creation of internal variant of shader ‘Particles/Standard Unlit’ failed.

After reading many threads on the forum, it seems my bug is related to this issue: https://issuetracker.unity3d.com/issues/android-a-glsl-error-occurs-when-using-the-unity-particle- system

For which I have updated my version of unity to 2020.3.37f1, however after testing the error persists.

My suspicion is that the ‘Particles/Standard Unlit’ shader is failing and failing doesn’t allow my custom shader to work properly, but that’s just a guess.

I attach the source code of my shader:

Shader "Unlit/PillsFadeOutMask"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _StartEffectPoint ("StartEffectPoint", float) = 0
        _EndEffectPoint ("EndEffectPoint", float) = 0
    }
    SubShader
    {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True"}
        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"
          
            uniform float _StartEffectPoint;
            uniform float _EndEffectPoint;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
                float4 worldSpacePos : TEXCOORD1;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);

                o.worldSpacePos = mul(unity_ObjectToWorld, float4(v.vertex.xyz, 1));
                return o;
            }

            float when_lt(float x, float y) {
              return max(sign(y - x), 0.0);
            }

            float when_gt(float x, float y) {
              return max(sign(x - y), 0.0);
            }
          
            float when_neq(float x, float y) {
              return abs(sign(x - y));
            }

            float when_eq(float x, float y) {
              return 1.0 - abs(sign(x - y));
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                float inside_range = when_lt(i.worldSpacePos.x,_StartEffectPoint) * when_gt(i.worldSpacePos.x, _EndEffectPoint);
                float out_range = when_eq(inside_range,0) * when_lt(i.worldSpacePos.x, _EndEffectPoint);
                float distanceBetweenBase = abs(distance(_EndEffectPoint, _StartEffectPoint));
                float distanceBetweenEnd = abs(distance(_EndEffectPoint, i.worldSpacePos.x));
                float realDistance = distanceBetweenEnd / distanceBetweenBase;
                float new_alpha = lerp(0, 1, realDistance) * inside_range * when_neq(col.a,0);
                col.a = (col.a * when_eq(new_alpha,0) + new_alpha) * when_eq(out_range,0);
                return col;
            }
            ENDCG
        }
    }
}

Update: I have tested this in iOS im having the same problem without a warning on the debugger.

I would appreciate any help you could give me.

I have also try this shader and is not working:

Shader "Unlit/PillsFadeOutMask"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _StartEffectPoint ("StartEffectPoint", float) = 0
        _EndEffectPoint ("EndEffectPoint", float) = 0
    }
    SubShader
    {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True"}
        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha
        LOD 100
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
        
            uniform float _StartEffectPoint;
            uniform float _EndEffectPoint;
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
                float4 worldSpacePos : TEXCOORD1;
            };
            sampler2D _MainTex;
            float4 _MainTex_ST;
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.worldSpacePos = mul(unity_ObjectToWorld, float4(v.vertex.xyz, 1));
                return o;
            }
            float when_lt(float x, float y) {
              return max(sign(y - x), 0.0);
            }
            float when_gt(float x, float y) {
              return max(sign(x - y), 0.0);
            }
        
            float when_neq(float x, float y) {
              return abs(sign(x - y));
            }
            float when_eq(float x, float y) {
              return 1.0 - abs(sign(x - y));
            }
            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }
    }
}