NVidia ARB_point_sprite & GF7900

I’m using a rather unconventional combination of GLSL, point sprites and deferred shading.

On G80+ and G200+ based GPUs, everything looks fine.

But on a GF7900 (G70 based?), something is screwed up.

First, enabling GL_POINT_SPRITE_ARB makes everything very slow if multiple render targets are active an points get rendered on pre-G80 cards (G7x and NV4x).

Second, I wondered why the normals in my GBuffer were totally screwed up. I recognized, that instead of normals I get gl_PointCoord (as a color) mapped on my points, although I do not use gl_PointCoord in the fragment shader! It seems that the driver silently overwrites my “varying vec3 v_normal” with gl_PointCoord. Is that possible?

Has anyone experienced similar problems, too?

Another thing I noticed is, that disabling GL_POINT_SPRITE_ARB does not give round spots (like the specs promise) on pre-G80 cards, instead squares are rendered. GF8 and up seem to render them properly.

about the round spots, did you try the point_sprite_hint ?

AFAIK, there is no such thing as a point_sprite_hint (did you refer to GL_POINT_SMOOTH_HINT?) The specs say, that in multisampled rasterization mode, GL_POINT_SMOOTH_HINT is to be ignored and that points have a circle shape, except when GL_POINT_SPRITE_ARB is enbled. In that case, they have to be square.

This could be unrelated, but I seem to recall there used to be an issue with the point sprite origin on NVIDIA. Switching the origin improved performance.

glPointParameteriNV(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT);