Re: [android-developers] OpenGL and Camera Preview - blending together gets “over saturated” color
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.comjavascript: 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/AAM/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.comjavascript: 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
Re: [android-developers] OpenGL and Camera Preview - blending together gets “over saturated” color
Alright. I got it. Now it works. I simply didn't multiply the values! Man, you helped me a lot! Really! How can I thank you for this??? I was working on that problem for... ages! It doesn't explain why it worked perfectly fine on older machines nor does it explain what to do in OpenGL 1.0 but at least it is a solution! Thank you very much! Tobias 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); -- 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
Re: [android-developers] OpenGL and Camera Preview - blending together gets “over saturated” color
So than it was just pure luck it worked fine with all the previous versions? What changed? Why can't it just be like it was before? I mean, its okay now and not really a big problem. - even though I don't know where I could have seen that information in the API. Thanks anyway! -- 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
[android-developers] OpenGL and Camera Preview - blending together gets “over saturated” color
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/AAM/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-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
[android-developers] Re: OpenGL ES on Camera Preview
Huh, sorry, might be that I made a mistake when compiling. Please try it again. Do you have a Galaxy S3? And there are no distortions in the lower grey area? -- 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
[android-developers] Re: OpenGL and Camera Problem
Huh, that is strange. So it worked and than it crashed? And it looks like it was crashing at the setParameters(); That is a place where it shoudln't crash at all!! Which Android Version do you have? Did you take the complete project? So there is no mistake in the Manifest (e.g. for the Camera rights)? Thank you anyway. I just got some other replys that it didn't work on other phones as well. So I wonder what was changed. Does anyone know a working Augmented Reality App for the S3? Anyway, thank you for your help, Tobias -- 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