Hi,

You should output your colors with premultiplied alpha. Your code should
look like this:

vec3 color = clamp(textureColor.rgb * lightWeighting.xyz, 0.0, 1.0);
color *= 0.5; // premultiply by alpha

gl_FragColor = vec4(color, 0.5);



On Mon, Aug 6, 2012 at 4:21 PM, Tobias Reich <[email protected]>wrote:

> I'm working on a new Galaxy S3 and found a problem that didn't occur on
> other phones like my old Galaxy S1 or the Galaxy S2 - which has almost the
> same GPU as the S3.
> When drawing my OpenGL models on top of my camera image like this:
>
> mGLView = new GLSurfaceView(this);
> mGLView.setOnClickListener(InputManager.getInstance()); GameRenderer
> renderer = new GameRenderer(kamera, this);
> InputManager.getInstance().currentActivity = renderer;
> mGLView.setEGLContextClientVersion(2); mGLView.setEGLConfigChooser(8, 8, 8,
> 8, 16, 0); setPreserveEGLContextOnPause
> mGLView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
> mGLView.setZOrderOnTop(true); mGLView.setRenderer(renderer);
> setContentView(new CameraView(this), new
> LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
> addContentView(mGLView, new LayoutParams(LayoutParams.MATCH_PARENT,
> LayoutParams.MATCH_PARENT));
>
> So the GLRenderer should be transparent. It actually is. It works fine for
> all the objects that are opaque as well as the background (where I see the
> image of the camera)
>
> My problem is, when I make the pixels semi-transparent in the fragment
> Shader I get a weird result. The brightest pixels seem overexpose when
> "blending together". And it looks like they got clamped after so the value
> that brighter than white - loosing probably the first bit - got dark again.
> So only the brightest pixels are affected. It happens even if I use a
> simple call like:
>
>> gl_FragColor = vec4(clamp(textureColor.rgb * lightWeighting.xyz, 0.0, 1.0), 
>> 0.5);
>>
>>
>
> So the actual GL-Fragment is clamped and I'm pretty sure it comes from the
> camera preview itself. Here is an image that describes my problem:
>
>
> <https://lh6.googleusercontent.com/-XhUolY4rNXA/UCBQnwRqb6I/AAAAAAAAAAM/YgzaE-KfGZs/s1600/glProblem.jpg>
>
> I get more and more convinced that it is an "overflow" for the values but
> how can I change this? By the way - perhaps it helps - this effect gets
> stronger the lower the alpha value of the fragment (the gl rendered one)
> is. So somehow it looks like something is compensating/normalizing the
> "semi transparent" values.
>
> Is there any way of "clamping" both values together since in the Shader I
> can only clamp the actual rendered fragment somehow without asking for the
> camera preview values. :-(
> Thank you very much! I hope it is not a severe problem,
>
>   Tobias Reich
>
>
>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en




-- 
Romain Guy
Android framework engineer
[email protected]

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to