- Home /
Question by
PointNineGames · Sep 20, 2014 at 10:20 PM ·
androidshaderhardware
Why doesn't this shader work on the Huawei Honor 2?
This shader works on other Android devices that I've tested, but not on the Huawei Honor 2. I'm lost as to how to proceed and could use some advice.
The hardware is the Huawei Honor 2 (U9508 1GB RAM). Running Android version 4.2.2 EMUI B709. I don't have physical access to the device so there has been no debugging opportunities.
The shader:
Shader "Sprite/OldSkoolPalette_Alpha8_NoOutline" {
Properties {
_MainTex ("Base Map", 2D) = "white" {}
_PaletteTex ("Palette", 2D) = "white" {}
}
SubShader
{
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
ZWrite Off Lighting Off Cull Off Fog { Mode Off } Blend SrcAlpha OneMinusSrcAlpha
LOD 110
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _PaletteTex;
float4 _MainTex_ST;
struct vin
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
v2f vert(vin v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
fixed4 frag(v2f i) : COLOR
{
float4 c = tex2D(_MainTex, i.texcoord);
float a256 = c.a * 255;
float upper = floor(a256 / 16)/16 + 0.04;
float lower = fmod(a256, 16)/16 + .02;
float4 c2 = tex2D(_PaletteTex, fixed2(upper,lower));
c2.a = (c2.r == 1 && c2.b == 0)?0:c2.a; // All border pixels have alpha of 0
return c2;
}
ENDCG
}
}
}
Broken:
Working:
640x960-1.png
(142.5 kB)
pic1.png
(237.9 kB)
Comment
Your answer
Follow this Question
Related Questions
Custom shader dissappear on mobile 0 Answers
Cubemap on Android 1 Answer
How to use shader depth buffer offset in android on unity 5 0 Answers
Way to know the power of a hardware on a mobile? 3 Answers
Transparent Detail on mobile 0 Answers