- Home /
Color To Alpha shader for android not working
I am having ca. 100 rgb textures which I try to render them in Realtime with Alpha channel by reading its pixels and discard some with a target color that will create at those transparency.
Therefore the general file size is dramatically decreased (half of those textures filesize). I have found a shader that suits my needs and this works with no issues on PC. However this does not work when testing on android.
Shader "Custom/ColorToAlpha" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_TargetColor ("Transparent Color", Color) = (0,0,0,1)
_Threshold ("Threshhold", Float) = 0.1
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
LOD 200
Cull Off
CGPROGRAM
#pragma surface surf Lambert //alpha
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
fixed4 _Color;
fixed4 _TargetColor;
half _Threshold;
void surf (Input IN, inout SurfaceOutput o) {
// Read color from the texture
half4 c = tex2D (_MainTex, IN.uv_MainTex);
// Output color will be the texture color * the vertex color
half4 output_col = c * _Color;
//calculate the difference between the texture color and the transparent color
half3 transparent_diff = c.xyz - _TargetColor.xyz;
half transparent_diff_squared = dot(transparent_diff,transparent_diff);
//if color is too close to the transparent one, discard it.
if(transparent_diff_squared < _Threshold)
discard;
//output albedo and alpha just like a normal shader
o.Albedo = output_col.rgb;
o.Alpha = output_col.a;
}
ENDCG
}
FallBack "Diffuse"
}
Comment
Your answer
Follow this Question
Related Questions
Separate Alpha and Color Textures for CutOut Shader 1 Answer
Displaying 2d graphics (sprites) on Android with ETC and alpha channel 1 Answer
android: diffuse detail shader not showing detail 1 Answer
A Detail Diffuse shader with alpha for the detail texture? 1 Answer
Surface Shader works on Web, Mac, iOS but not Android 0 Answers