About Store Forum Documentation Contact



Post Reply 
Android Error
Author Message
MrPi Offline
Member

Post: #1
Android Error
Here's a new error of one of our Android users. On a Galaxy Exhibit with Android 4.1.2.

PHP Code:
Error accessing ShaderTech "BloomGDSCH" in Shader "Main".
Error linking vertex+pixel shader in technique "BloomGDSCH" of shader "Main"
L0010 Uniform 'PixSize' differ on precision
Vertex Shader
:
#ifdef GL_ES
#define LP lowp
#define MP mediump
#define HP highp
precision highp float;
precision highp int;
#else
#define LP
#define MP
#define HP
#endif
#ifdef GL_FRAGMENT_PRECISION_HIGH
#define VAR_HP varying HP
#else
#define VAR_HP varying MP
#endif
#define DoGlow 1
#define DoClamp 1
#define half 1
#define PAR uniform
#define VAR_LP varying LP
#define VAR_MP varying MP
#define EPS 0.0001
#define EPSL 0.01
#define PI 3.14159265
#define PI2 6.28318531
#define SBUMP_ZERO 0
#define SBUMP_FLAT 1
#define SBUMP_NORMAL 2
#define FX_NONE 0
#define FX_GRASS 1
#define FX_LEAF 2
#define FX_LEAFS 3
#define FX_BONE 4
#define Sat(x) clamp(x,0.0,1.0)
MP float Sum(MP vec2 v){return v.x+v.y;}
MP float Sum(MP vec3 v){return v.x+v.y+v.z;}
MP float Sum(MP vec4 v){return v.x+v.y+v.z+v.w;}
MP float Sqr(MP float x){return x*x;}
MP vec2 Sqr(MP vec2 x){return x*x;}
MP float Cube(MP float x){return x*x*x;}
HP float Length2(HP vec2 v){return dot(v,v);}
HP float Length2(HP vec3 v){return dot(v,v);}
HP float Length2(HP vec4 v){return dot(v,v);}
MP vec2 Rotate(MP vec2 vec,MP vec2 cos_sin)
{
return 
vec2(vec.x*cos_sin.x-vec.y*cos_sin.y,
vec.x*cos_sin.y+vec.y*cos_sin.x);
}
MP float LerpR(MP float from,MP float to,MP float v){return(v-from)/(to-from);}
MP float LerpRS(MP float from,MP float to,MP float v){return Sat((v-from)/(to-from));}
LP float LPMax(LP float x,LP float y,LP float z,LP float w){return max(x,max(y,max(z,w)));}
LP float LPMax(LP vec4 v){return LPMax(v.x,v.y,v.z,v.w);}
PAR LP float BloomScale,BloomCut;
#if DoGlow!=0
#define res ((half!=0) ?2:4)
VAR_HP vec2 IO_tex;
VAR_LP float scale;
#elif half!=0
VAR_HP vec2 IO_tex;
#else
VAR_HP vec2 IO_tex0,IO_tex1,IO_tex2,IO_tex3;
VAR_LP float scale;
#endif
PAR HP float VtxHeightmap;
PAR MP float VtxSkinning;
#define ATTR attribute
ATTR HP vec4 ATTR0;
ATTR MP vec3 ATTR9;
ATTR MP vec3 ATTR1;
ATTR MP vec4 ATTR2;
ATTR HP vec2 ATTR3;
ATTR HP vec2 ATTR4;
ATTR HP vec2 ATTR11;
ATTR MP float ATTR10;
ATTR MP vec3 ATTR5;
ATTR MP vec3 ATTR6;
ATTR LP vec4 ATTR8;
ATTR LP vec4 ATTR7;
MP vec3 vtx_nrm(){return ATTR1;}
MP vec3 vtx_tan(){return ATTR2.xyz;}
MP float vtx_tanW(){return ATTR2.w;}
HP vec4 vtx_pos4(){return ATTR0;}
HP vec3 vtx_pos(){return ATTR0.xyz;}
MP vec3 vtx_hlp(){return ATTR9;}
HP vec2 vtx_tex(const bool can_be_heightmap){return(can_be_heightmap&&bool(VtxHeightmap))?ATTR0.xz*vec2(VtxHeightmap,-VtxHeightmap):ATTR3;}
HP vec2 vtx_tex1(){return ATTR4;}
HP vec2 vtx_tex2(){return ATTR11;}
MP ivec3 vtx_bone(){return bool(VtxSkinning)?ivec3(ATTR5):ivec3(0,0,0);}
#ifdef GL_ES
MP vec3 vtx_weight(){MP float w=ATTR6.x/(ATTR6.x+ATTR6.y);return vec3(w,1.0-w,0.0);}
#else
MP vec3 vtx_weight(){return ATTR6;}
#endif
LP vec4 vtx_color(){return ATTR7;}
LP vec4 vtx_material(){return ATTR8;}
MP float vtx_size(){return ATTR10;}
PAR HP vec2 PixSize;
PAR HP vec4 Coords;
void main()
{
gl_Position=vec4(vtx_pos().xy,1.0,1.0);
HP vec2 tex=vtx_tex(false);
#if DoGlow!=0
IO_tex=tex-PixSize*vec2((half!=0)?0.5:1.5,(half!=0)?0.5:1.5);
scale=BloomScale/float(res*res);
#elif half!=0
IO_tex=tex;
#else
#if DoClamp!=0
IO_tex0=tex-PixSize;
IO_tex1=tex+PixSize;
#else
IO_tex0=tex+PixSize*vec2(1.0,1.0);
IO_tex1=tex+PixSize*vec2(-1.0,1.0);
IO_tex2=tex+PixSize*vec2(1.0,-1.0);
IO_tex3=tex+PixSize*vec2(-1.0,-1.0);
#endif
scale=BloomScale*0.25;
#endif
}
Pixel Shader:
#extension GL_ARB_shader_texture_lod:enable
#extension GL_EXT_shader_texture_lod:enable
#extension GL_EXT_shadow_samplers:enable
#ifdef GL_ES
#define texture2DLod texture2DLodEXT
#define shadow2DProj shadow2DProjEXT
#define LP lowp
#define MP mediump
#ifdef GL_FRAGMENT_PRECISION_HIGH
#define HP highp
#else
#define HP mediump
#endif
precision LP float;
precision LP int;
#else
#define LP
#define MP
#define HP
#endif
#define VAR_HP varying HP
#define DoGlow 1
#define DoClamp 1
#define half 1
#define PAR uniform
#define VAR_LP varying LP
#define VAR_MP varying MP
#define EPS 0.0001
#define EPSL 0.01
#define PI 3.14159265
#define PI2 6.28318531
#define SBUMP_ZERO 0
#define SBUMP_FLAT 1
#define SBUMP_NORMAL 2
#define FX_NONE 0
#define FX_GRASS 1
#define FX_LEAF 2
#define FX_LEAFS 3
#define FX_BONE 4
#define Sat(x) clamp(x,0.0,1.0)
MP float Sum(MP vec2 v){return v.x+v.y;}
MP float Sum(MP vec3 v){return v.x+v.y+v.z;}
MP float Sum(MP vec4 v){return v.x+v.y+v.z+v.w;}
MP float Sqr(MP float x){return x*x;}
MP vec2 Sqr(MP vec2 x){return x*x;}
MP float Cube(MP float x){return x*x*x;}
HP float Length2(HP vec2 v){return dot(v,v);}
HP float Length2(HP vec3 v){return dot(v,v);}
HP float Length2(HP vec4 v){return dot(v,v);}
MP vec2 Rotate(MP vec2 vec,MP vec2 cos_sin)
{
return 
vec2(vec.x*cos_sin.x-vec.y*cos_sin.y,
vec.x*cos_sin.y+vec.y*cos_sin.x);
}
MP float LerpR(MP float from,MP float to,MP float v){return(v-from)/(to-from);}
MP float LerpRS(MP float from,MP float to,MP float v){return Sat((v-from)/(to-from));}
LP float LPMax(LP float x,LP float y,LP float z,LP float w){return max(x,max(y,max(z,w)));}
LP float LPMax(LP vec4 v){return LPMax(v.x,v.y,v.z,v.w);}
PAR LP float BloomScale,BloomCut;
#if DoGlow!=0
#define res ((half!=0) ?2:4)
VAR_HP vec2 IO_tex;
VAR_LP float scale;
#elif half!=0
VAR_HP vec2 IO_tex;
#else
VAR_HP vec2 IO_tex0,IO_tex1,IO_tex2,IO_tex3;
VAR_LP float scale;
#endif
#define AlphaTest(alpha) if(alpha+MaterialColor().a<1.0)discard
PAR sampler2D Col,Col1,Col2,Col3,
Nrm,Nrm1,Nrm2,Nrm3,
Lum;
PAR samplerCube Rfl;
PAR MP float AllowBackFlip;
#define BackFlip(dir) {if(gl_FrontFacing==false)dir*=AllowBackFlip;}
struct ViewportClass
{
HP float from,range;
HP vec2 clamp_min,clamp_max,center,size,size_fov_tan;
HP vec4 FracToPosXY,ScreenToPosXY,PosToScreen;
};
PAR ViewportClass Viewport;
HP vec2 ViewportClamp(HP vec2 screen,const bool do_clamp){return do_clamp?clamp(screen,Viewport.clamp_min,Viewport.clamp_max):screen;}
PAR LP vec4 Color[4];
PAR HP vec2 PixSize;
PAR HP vec4 Coords;
void main()
{
#if DoGlow!=0
LP vec3 color=vec3(0.0,0.0,0.0);
LP vec4 glow=vec4(0.0,0.0,0.0,0.0);
for(
int x=0;x<res;x++)
for(
int y=0;y<res;y++)
{
LP vec4 c=texture2D(Col,ViewportClamp(IO_tex+PixSize*vec2(x,y),DoClamp!=0));
color+=c.rgb;
glow.rgb+=c.rgb*c.a;
glow.a=max(glow.a,c.a);
}
glow.rgb*=2.0*glow.a/LPMax(vec4(glow.rgb,EPS));
gl_FragColor.rgb=max(color*scale-BloomCut,glow.rgb);
#elif half!=0
gl_FragColor.rgb=texture2D(Col,ViewportClamp(IO_tex,DoClamp!=0)).rgb*BloomScale-BloomCut;
#else
#if DoClamp!=0
HP vec2 tex_min=ViewportClamp(IO_tex0,true),
tex_max=ViewportClamp(IO_tex1,true);
LP vec3 col=texture2D(Col,vec2(tex_min.x,tex_min.y)).rgb
+texture2D(Col,vec2(tex_max.x,tex_min.y)).rgb
+texture2D(Col,vec2(tex_min.x,tex_max.y)).rgb
+texture2D(Col,vec2(tex_max.x,tex_max.y)).rgb;
#else
LP vec3 col=texture2D(Col,IO_tex0).rgb
+texture2D(Col,IO_tex1).rgb
+texture2D(Col,IO_tex2).rgb
+texture2D(Col,IO_tex3).rgb;
#endif
gl_FragColor.rgb=col*scale-BloomCut;
#endif
gl_FragColor.a=0.0;


Why are all these things initialized even though they are not used? Bloom for example. I only do 2D and very simple 3D.
11-20-2014 02:46 PM
Find all posts by this user Quote this message in a reply
Esenthel Online
Administrator

Post: #2
RE: Android Error
Hello,

You haven't upgraded to the latest version.
11-21-2014 01:24 AM
Find all posts by this user Quote this message in a reply
MrPi Offline
Member

Post: #3
RE: Android Error
Are these shader improvements/adjustments now completely done and all submitted?
(This post was last modified: 11-22-2014 12:27 PM by MrPi.)
11-21-2014 10:44 PM
Find all posts by this user Quote this message in a reply
MrPi Offline
Member

Post: #4
RE: Android Error
Update: This is fixed now.
11-24-2014 03:56 PM
Find all posts by this user Quote this message in a reply
Post Reply