   SSAO banding artifacts not fixed by reflection
  Hi,I'm having a little problem with an SSAO implementation that I am doing for a school project. I've read all over the internet (including here the on Gamedev forums) that banding artifacts which occur from self occlusion can be fixed by testing if the dot product between the surface normal and the sample vector is less than 0, and if it is, reflecting about the normal. Although this seems to work on surfaces like my ground plane, I am getting other very similarly odd results. I can post GLSL code if needed but maybe someone will understand what is going wrong simply by these pictures from my personal wiki (sorry I'm not sure how to upload images):This model is a hand with fingers facing the screen, and although the ground plane has no banding, it occurs everywhere else:http://ambitiouspagoda.com/wiki/Image:SSDL_handBanding.jpgI am getting some sort of correct-ish occlusion on the staggered squares due to the wall, but the columns look horrible. I get stripes that rotate according to my camera movement and don't line up with the actual contours of the columns at all:http://ambitiouspagoda.com/wiki/Image:SSDL_columnBanding.jpgThanks for any help. It's been driving me nuts!   
  Ok so it seems that I fixed the problem so I'll answer myself for future reference. I noticed that the banding lines corresponded to contour lines in my depth texture created as the scene depth changed. The textures I had attached to the frame buffer object were only of the RGBA8 format, so 8 bits per channel (rgb = normal and a = depth). This did not provide sufficient precision as I was able to see step-like changes in depth as it incrementally moved from shallow to deep. Increasing my texture to GL_RGBA32F_ARB fixed the problem completely. Now I have 32 bit float precision for my depth channel.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, screenWidth, screenHeight, 0, GL_RGBA, GL_FLOAT, NULL);;  Sorry I got your PM but forgot to respond until now...I was going to say that it looked like a precision issue. :P   