Hey. I've had a bug with my lighting shader for a while now and I thought I'd ask if anyone knows anything about it. With multisampling enabled I get single-pixel artifacts where the lighting computation gives a much higher value than it should. The artifact happens on triangles that are almost 90 degrees aligned to the screen (almost invisible/very "thin"), around the outline of smooth objects. This is my shader line to calculate the light intensity from a point light (no distance attenuation).
float light = max(dot(normalize(normal), normalize(lightPosition - eyeSpacePosition.xyz)), 0.0);
Here's a screenshot of the artifacts that keep on flickering when the camera moves. There's no texturing or anything, I just output the above light value the RGB channels. This is with 2xMSAA but it's more or less visible at any sample rate.
I have a hunch that this is due to the fact that the normal becomes extrapolated for those edge samples and somehow wrap around or something. If that's the case, then the only solution I know of is to enable centroid interpolation, which is an OGL4 feature. -_-'