ARB_depth_texture filtering difference between GF4 and R300?

Is there a known implementation difference on the two cards, when it comes to ARB_depth_texture and bilinear filtering?

My GeForce4 Ti, latest drivers, filters the way I would expect, with a subtle but visible greyscale value. My 9700 appears to have a discrete black/white border on the shadow edge. Basically the shadow edges just get bigger and smaller. I don’t know much about how it works, but it seems like the texture is being filtered before the comparison is taking place.

This happens with a texture generated by a CopyTexImage2D from a pbuffer, 2048x2048 and down. GeForce looks good (hopefully correct) with the TexImage and with render_depth_texture.

Also, NVidia’s VBO still seems buggy. My app just spins in nvoglnt.dll when I switch to a pbuffer and try to use VBO. Only happens when I go above 6 or so buffers. ATi works fine.

My GeForce4 Ti, latest drivers, filters the way I would expect, with a subtle but visible greyscale value. My 9700 appears to have a discrete black/white border on the shadow edge. Basically the shadow edges just get bigger and smaller. I don’t know much about how it works, but it seems like the texture is being filtered before the comparison is taking place.

It’s funny. It looks like that because that’s what the 9700 does. Technically, it should be (internally) implementing ARB_shadow using multiple accesses and a fragment program, but they probably didn’t bother to add that to the driver.

The GeForce4 (and up) cards have hardware specifically designed to implement ARB_shadow. The Radeon cards have to emulate it with fragment programs.

As specified in the ARB_shadow specification:

(7) How is bilinear or trilinear filtering implemented?

RESOLUTION: We suggest an implementation behaviour but leave the
details up to the implementation.  Differences here amount to the
quality and softness of shadow edges.  Specific filtering
algorithms could be expressed via layered extensions.  We're
intentionally vague here to avoid IP and patent issues.

On GeForce3+, the hardware implements percentage closer filtering when GL_LINEAR is specified for the depth texture used in the shadow compare.

If you have VBO problems, please send me an email with a zip containing the binary and source for your application and I’ll file a bug to make sure the problem you are seeing gets fixed in a future driver release.

Thanks Korval.

The biggest problem is that it looks horrible. Coupled with the fact that I get can’t get a good set of parameters for glPolygonOffset, I’m somewhat put off by the 9700’s shadow mapping. Should I learn ARB_fragment_program and write my own version of ARB_shadow?

Edit: thanks jra101. I can’t release the data that causes the VBO hang, as it’s company property, and also is military in nature. I’ll see if I can generate some benign data in the coming days.

[This message has been edited by CatAtWork (edited 08-26-2003).]