vertex shader turns pink on Galaxy S3

Hello ! So as the title says , this shader doesn’t work on Samsung Galaxy S3 (it’s pink ) , it works fine on OnePlus One and Galaxy S4 . I have no error on my console when I play it (used Log Viewer plug-in). I tried deleting the #pragma glsl or #pragma 3.0 it didn’t change a thing. When I comment what’s on my vert function then it’s not pink anymore but off course the movements are not there anymore. Any chance for a solution ? It’s kind of driving me nuts (sorry for the language ). I’m using Unity 5.6.0f3

Here’s the code :

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Homemade/Sky/SkyDisplacementFallback" {
    Properties{
        _Color("Color", Color) = (1,1,1,1)
        _MainTex("Main Texture",2D) = "white" {}
    _Amplitude("Amplitude", Range(0.00,5.00)) = 1.0
        _Speed("Speed", Range(0.,100.)) = 5.0
        _ColorFade("Color Fade",Range(0.0,1.0)) = 0.5
    }
        SubShader{
        LOD 200
        Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
        Blend SrcAlpha One
        Cull Off
        //ZWrite Off

        Pass{
        CGPROGRAM

        // Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
#pragma glsl

#pragma vertex vert alpha
#pragma fragment frag
#include "UnityCG.cginc"


        uniform sampler2D _MainTex;
    uniform fixed4 _Color;
    uniform float _Speed;
    uniform float _Amplitude;
    uniform float _ColorFade;

    struct v2f {
        float4 pos : SV_POSITION;
        float2 uv : TEXCOORD0;
        UNITY_FOG_COORDS(2)
    };

  
    float grey(float4 color) {
        return 12.92*(0.2126*color.r + 0.7152*color.g + 0.0722*color.b);
    }

    v2f vert(appdata_full v)
    {
        v2f o;
      
        v.vertex.x += 0.11*cos(v.vertex.z + (_CosTime.y*_Speed));
        v.vertex.y += 0.11*cos(v.vertex.z + (_CosTime.y*_Speed));

        float4 height = tex2Dlod(_MainTex, float4(v.texcoord.xy, 0, 0)) *_Amplitude;
        height = grey(height);

        v.vertex.y += height*cos(v.vertex.x + (_SinTime.x*_Speed));
      
        o.uv = v.texcoord;
        o.pos = UnityObjectToClipPos(v.vertex);
        UNITY_TRANSFER_FOG(o, o.pos);
        return o;
    }


    fixed4 frag(v2f i) : SV_Target{
        fixed4 col = _Color;
      float4 texColor = tex2D(_MainTex, i.uv);
      col = 2.0*texColor*_Color*(texColor.a*_ColorFade);

      UNITY_APPLY_FOG(i.fogCoord, col);
      return col;
    }


        ENDCG
    }

    }
        FallBack Off
}

Thank you

The Galaxy S3 is an OpenGLES 2.0 device.

Should I put #pragma 2.0 instead then ?
I tried putting #pragma 2.0 , my shader is still pink

You are trying to read a texture in vertex shader. This is not guaranteed to work in OpenGL ES 2.0 (and my guess is that Galaxy S3 doesn’t support reading textures from vertex shader).

Okay so my issue comes from that line

float4 height = tex2Dlod(_MainTex, float4(v.texcoord.xy, 0, 0)) *_Amplitude;

because of that

Thank you !

You can try to force the shader to compile in GLSL:
#pragma glsl

edit: sorry, missed the post of yours where you stated that you already tried glsl or target 3.0