PDA

View Full Version : rendering artefact



Peter06
05-29-2008, 06:32 AM
Hi Opengl Community,

I'm doing some test on drawing some quads into a Fbo with a classic blending mode active.

I have a correct result on Nvidia.

But on Ati I have some problems.
On the border of the triangle I'm drawing I have artefact. (See the attached link).
http://img228.imageshack.us/img228/8295/artefactlx9.jpg

I have done some tests (when I draw triangle or quad, I have the same result => artefact).
When I activate the blending ops the artefact is coming.

Some notes :
- I have the last ATI driver.
- You can notice that the strange artefact come only on the border off the drawing geometry.
- The blending operation when I projected two quads (one on the other) is inoperant.

Thanks for your appreciate help ;)

sqrt[-1]
05-29-2008, 06:57 AM
Perhaps it is caused by GL_POLYGON_SMOOTH. Try not enabling it (or call glDisable(GL_POLYGON_SMOOTH); )

Peter06
05-29-2008, 07:08 AM
I have tried, but nothing changed.

And I notice that nothing blending ops are functionnal.
So if I activate blending and project two quad, The second quad overlap the second, without blending.

I thinks the problem come from a conflict with the use of FBO and blending on the last Ati driver.

I hope someone will find something to correct it !

bobGL
05-29-2008, 03:17 PM
What is the config. of your FBO? is it RGB8/RGBA8 or you are using a float texture? If it's a float texture and you use blending you'll always going to have theses artifacts... I got a Radeon and I have similar artifacts as soon as blending is ON with either with GL_RGBA16F or GL_RGBA32F on Windows/Linux or Mac (latest driver on all of them). But on NVIDIA no problem, everything is ok. If you are using a float texture just switch back to a 8 bit FBO and everything will be fine.

Hope this help!

Eosie
05-29-2008, 05:58 PM
It looks like floating-point blending is not supported. Blending on float16 textures is supported on X1000 and later. For blending on float32 textures you must have at least HD2000.

Peter06
05-29-2008, 11:42 PM
Thanks a lot for your message.

I have think the same as your suggestion during my sleep...

But I have done some test :
To setup a 8 bits texture I use GL_RGBA8 (I'm right or not) because I have again the same problem (with a floating point texture or not).

glTexImage2D(texture_rectangle, 0,GL_RGBA8, m_s_TexDec._w, m_s_TexDec._h, 0, GL_RGBA, GL_FLOAT,0); (It's the good way to create the texture for my FBO ?)

Do you think it exist a method to test if the hardware can support blending on float16 (floating point) texture ?

=> I have done some test, and If I'm doing the blending operation manually by setting the Fbo attached texture in input and output of a shader, the program work good.

So it's the reason why I think it's a fp16 blending problem too

Eosie
05-30-2008, 04:58 PM
glTexImage2D(texture_rectangle, 0,GL_RGBA8, m_s_TexDec._w, m_s_TexDec._h, 0, GL_RGBA, GL_FLOAT,0); (It's the good way to create the texture for my FBO ?)
Well, GL_FLOAT should not be there if you used RGBA8.


Do you think it exist a method to test if the hardware can support blending on float16 (floating point) texture ?
As far as I know, there is no way to check for support. Most probably you have to render something, read the output and compare it with an image of what should have rendered.

Relic
05-31-2008, 09:28 AM
glTexImage2D(texture_rectangle, 0,GL_RGBA8, m_s_TexDec._w, m_s_TexDec._h, 0, GL_RGBA, GL_FLOAT,0); (It's the good way to create the texture for my FBO ?)
Well, GL_FLOAT should not be there if you used RGBA8.

User data format doesn't matter if the user pointer is NULL and there is no PBO bound. He just created an empty texture object of the size specified by the internalFormat and dimensions.