- Home /
Clip Shader not working on a few Android devices
I have a shader that is supposed to Clip images. For the materials that need to be clipped, the Clip is set to 1 and for others it is set to 0. When Clip is 0, it works fine on the Galaxy Note4. However it simply doesn't render on the Nexus 5 and OnePlusX. Shader "ClipRect" {
Properties {
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Alpha ("Alpha", Range(0,1)) = 1.0
_Clip ("Clip", Int) = 0
_ClipRect ("ClipRect", Vector) = (-5000, 5000, 5000, -5000) // left, top, right, bottom
}
SubShader {
Tags {
"Queue"="Transparent"
"IgnoreProjector"="True"
"DisableBatching"="True"
"ForceNoShadowCasting"="True"
"RenderType"="Transparent"
}
LOD 80
Cull Back
Lighting Off
ZWrite On
ZTest Always
Blend SrcAlpha OneMinusSrcAlpha
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma enable_d3d11_debug_symbols
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float4 color : COLOR;
float4 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
half2 texcoord : TEXCOORD0;
float4 clipcoord : TEXCOORD1;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _Alpha;
int _Clip;
float4 _ClipRect; // left, top, right, bottom
float4x4 _SpriteToClip;
v2f vert (appdata_t v) {
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
o.color = v.color;
o.clipcoord = mul(_SpriteToClip, v.vertex);
return o;
}
float4 frag (v2f i) : SV_Target {
fixed4 col = tex2D(_MainTex, i.texcoord);
bool bKeep = true;
if(_Clip != 0) {
if(i.clipcoord.x < _ClipRect.x ||
i.clipcoord.x > _ClipRect.z ||
i.clipcoord.y > _ClipRect.y ||
i.clipcoord.y < _ClipRect.w) {
bKeep = false;
}
}
if(bKeep) {
col.rgb *= col.a;
col.a *= _Alpha;
} else {
discard;
}
return col;
}
ENDCG
}
}
}
It seems like the logic is right but I don't know why this would not render on some devices. Very new to shaders. Any help would be appreciated.
Your answer
Follow this Question
Related Questions
Shader works differently on Android (OpenGL) and Editor (DX11) 0 Answers
How to force the compilation of a shader in Unity? 5 Answers
unity freeze when use normal map at secondary maps 0 Answers
UI CustomShader disappears when Android losing focus 0 Answers
Selectively drawing textures on a mesh to represent damage using a shader 0 Answers