PDA

View Full Version : Shader gives different results on different android phones!



dirhem
09-11-2011, 06:24 AM
I am trying to implement a blur filter with opengl es 2.0 on android.
Here is the code i am using.


varying highp vec2 fragTexCoord;
highp vec2 u_Scale;
uniform sampler2D s_texture;
highp vec2 gaussFilter[7];
uniform highp float radius;

highp vec4 boxVerBlur(){
gaussFilter[0] = vec2( -3.0,0.015625);
gaussFilter[1] = vec2(-2.0, 0.09375);
gaussFilter[2] = vec2(-1.0, 0.234375);
gaussFilter[3] = vec2(0.0, 0.3125);
gaussFilter[4] = vec2(1.0, 0.234375);
gaussFilter[5] = vec2(2.0, 0.09375);
gaussFilter[6] = vec2(3.0, 0.015625);

highp vec4 color = vec4(0,0,0,1);
u_Scale = vec2( 1.0/radius, 0 );
for( int i = 0; i < 7; i++ )
{
color += texture2D( s_texture, vec2( fragTexCoord.x + gaussFilter[i].x*u_Scale.x, fragTexCoord.y + gaussFilter[i].x*u_Scale.y )) * gaussFilter[i].y;
}
return color;
}

void main(void)
{
gl_FragColor = boxVerBlur();
}

On "Samsung Galaxy S" it works as expected. However when i run same app on "Samsung Galaxy Ace," it results a brighter texture without blur effect.

Result from Galaxy S
http://i.imgur.com/9jO5K.png



Result from Galaxy Ace
http://i.imgur.com/dVOHA.png

dirhem
09-12-2011, 04:57 AM
If i need to paraphrase the question, which part of the code above is hardware dependent ?

elizabethpollard
09-26-2011, 09:23 PM
I am trying to implement a blur filter with opengl es 2.0 on android.
Here is the code i am using.


varying highp vec2 fragTexCoord;
highp vec2 u_Scale;
uniform sampler2D s_texture;
highp vec2 gaussFilter[7];
uniform highp float radius;

highp vec4 boxVerBlur(){
gaussFilter[0] = vec2( -3.0,0.015625);
gaussFilter[1] = vec2(-2.0, 0.09375);
gaussFilter[2] = vec2(-1.0, 0.234375);
gaussFilter[3] = vec2(0.0, 0.3125);
gaussFilter[4] = vec2(1.0, 0.234375);
gaussFilter[5] = vec2(2.0, 0.09375);
gaussFilter[6] = vec2(3.0, 0.015625);

highp vec4 color = vec4(0,0,0,1);
u_Scale = vec2( 1.0/radius, 0 );
for( int i = 0; i < 7; i++ )
{
color += texture2D( s_texture, vec2( fragTexCoord.x + gaussFilter[i].x*u_Scale.x, fragTexCoord.y + gaussFilter[i].x*u_Scale.y )) * gaussFilter[i].y;
}
return color;
}

void main(void)
{
gl_FragColor = boxVerBlur();
}

On "Samsung Galaxy S" it works as expected. However when i run same app on "Samsung Galaxy Ace," it results a brighter texture without blur effect.

Result from Galaxy S
http://i.imgur.com/9jO5K.png



Result from Galaxy Ace
http://i.imgur.com/dVOHA.png

I am having the same issue with the resolution on my Samsung phone as well. Does anyone has a clue on what is going on and how can I remedy this situation? Do I have to update the software or what?

Paul
07-16-2012, 12:22 AM
I am trying to implement a blur filter with opengl es 2.0 on android.
Here is the code i am using.


varying highp vec2 fragTexCoord;
highp vec2 u_Scale;
uniform sampler2D s_texture;
highp vec2 gaussFilter[7];
uniform highp float radius;

highp vec4 boxVerBlur(){
gaussFilter[0] = vec2( -3.0,0.015625);
gaussFilter[1] = vec2(-2.0, 0.09375);
gaussFilter[2] = vec2(-1.0, 0.234375);
gaussFilter[3] = vec2(0.0, 0.3125);
gaussFilter[4] = vec2(1.0, 0.234375);
gaussFilter[5] = vec2(2.0, 0.09375);
gaussFilter[6] = vec2(3.0, 0.015625);

highp vec4 color = vec4(0,0,0,1);
u_Scale = vec2( 1.0/radius, 0 );
for( int i = 0; i < 7; i++ )
{
color += texture2D( s_texture, vec2( fragTexCoord.x + gaussFilter[i].x*u_Scale.x, fragTexCoord.y + gaussFilter[i].x*u_Scale.y )) * gaussFilter[i].y;
}
return color;
}

void main(void)
{
gl_FragColor = boxVerBlur();
}

On "Samsung Galaxy S" it works as expected. However when i run same app on "Samsung Galaxy Ace," it results a brighter texture without blur effect.

Result from Galaxy S
http://i.imgur.com/9jO5K.png



Result from Galaxy Ace
http://i.imgur.com/dVOHA.png

I am having the same issue with the resolution on my Samsung phone as well. Does anyone has a clue on what is going on and how can I remedy this situation? Do I have to update the software or what?