I was trying to test some gyroscope input stuff on android and thought I'll make a cool cube to look at and rotate with the gyroscope. So a wrote a simple parallax shader to make the cube look cool. It works fine in the editor but on my phone the cube has no parallax, not cool. I messed around with build setting and stuff for a while and nothing seems to make it work. Can anyone point to what is maybe going wrong. Code (CSharp): Shader "CoolCube/CoolCube" { Properties { _Color1("Color 1", Color) = (1, 0, 0, 1) _Color2("Color 2", Color) = (0, 1, 0, 1) _MainTex ("Texture", 2D) = "white" {} _ParallaxStrength("Parallax Strength", float) = 1 _ParallaxColorPower("Parallax Color Power", Range(0, 1)) = 1 } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; float3 normal : Normal; float3 tangent : Tangent; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; float3 tanViewDir : TEXCOORD1; float3 normal : TEXCOORD2; }; sampler2D _MainTex; float4 _MainTex_ST; float _ParallaxStrength; float _ParallaxColorPower; float4 _Color1, _Color2; #define ITERATIONS 10 v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.normal = UnityObjectToWorldNormal(v.normal); float3x3 objectToTangent = float3x3(v.tangent, cross(v.tangent, v.normal), v.normal); o.tanViewDir = mul(objectToTangent, ObjSpaceViewDir(v.vertex)); return o; } fixed4 frag (v2f i) : SV_Target { i.tanViewDir = normalize(i.tanViewDir); float4 col = float4(0, 0, 0, 0); float stepSize = float(1) / ITERATIONS; [unroll] for(int p = 0; p < ITERATIONS; p++){ float f = p; float effect = stepSize * f; float2 uv = i.uv - (i.tanViewDir.xy * _ParallaxStrength * effect); float value = tex2D(_MainTex, uv).r; float tempCol = value * smoothstep(effect, 1, value); tempCol *= _ParallaxColorPower; col += lerp(_Color1, _Color2, effect) * tempCol; } return col; } ENDCG } } }