shadow maps

I am trying to get glsl shadow maps working… but I am getting a discrepancy between the z depth calculated by the opengl fixed pipeline and my homemade glsl version. And I don’t know why.

So I render to a framebuffer object with a depth buffer attached (code in Java)…

IntBuffer dbo = BufferUtil.newIntBuffer(1);, dbo);
DBO = dbo.get(0);, DBO);, 0, GL.GL_DEPTH_COMPONENT32, mapsize[0], mapsize[1],

My projection/view for rendering to the fbo is bog standard…
glu.gluPerspective(spotangle * 2.0f, (float) mapsize[0] / (float) mapsize[1], 1000.0f, 6000.0f);

glu.gluLookAt(from[0], from[1], from[2], to[0], to[1], to[2], 0.0f, 1.0f, 0.0f);

I grab each matrix with…, projMat, 0);, viewMat, 0);

and assign to a texture matrix with scale and translate to remap to [0,1]…;;;, 0.5f, 1.0f);, 1.0f, 0.0f);, 0);, 0);

And now in my vertex shader (as per orange book)…

varying vec4 shadowCoord[MAXLIGHTS];

vec4 texCoord = gl_TextureMatrix[i+1]*gl_Vertex;
shadowCoord[i] = texCoord/texCoord.w;

and frag shader (nearly as per orange book)…

float zmap = texture2DProj(shadowmap[i], shadowCoord[i]).x;
float zobj = shadowCoord[i].z/shadowCoord[i].w;

I get two different answers for zmap and zobj (when a point is not occluded from the light pov). I would assume they should be equal (save for a bit of rounding etc. and usual shadow bias issues). But they are quite different. They both seem to have perspective depth type values (in the rangle [0,1]) but they seem to have listened to different near and far clip values - maybe. I thought perhaps glDepthRange but no.

I want use texture2D and not shadow2D because I want to do ‘things’ with my returned z depth. As Iunderstand it the Proj versions do the divide by w for you. So why the orange book uses shadow2DProj when it did the divide by w in the vertex shader, probaby means that I have missed something.

So I like to refer to documentation… but this is opengl. Mathematicaly, what should I expect to find in my depth buffer?

Anyone know why my two zs are different?

Any help, much appreciated. I am close to crying!

Correct me if I’m wrong, but shouldn’t it be:;;;, 0.5f, 0.5f);, 1.0f, 1.0f);, 0);, 0);

I want you to picture me slapping my forehead with the palm of my hand.

NiCo - I am forever in your debt! Thank you.

I don’t know how that got in there. Stupidity most likely.

All works fine now.

nice picture :wink:

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.