Okay, I will try this but after all, it happens in OpenGL 1.0 as well and there is no chance to change the shader there. What could I do there? And why did it work on older phones/android versions like the S1 and the S2 with Android 2.x?
Am Dienstag, 7. August 2012 09:08:57 UTC+2 schrieb Romain Guy (Google): > > 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 <tobias...@gmail.com<javascript:> > > 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 >> android-d...@googlegroups.com<javascript:> >> To unsubscribe from this group, send email to >> android-developers+unsubscr...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en > > > > > -- > Romain Guy > Android framework engineer > roma...@android.com <javascript:> > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en