This is because the hardware depth buffer is hyperbolic. As a very rough rule of thumb, imagine half of your precision going towards representing the objects between near and 2*near, and the other half representing objects from 2*near to far.
non-Linear?! well that explains a lot!
ok, i have the near plane at 0.1 d3d unit. in that title, the scale is 1 foot = 1 d3d unit. .0.1 is required to fit the player inside a small lean-to or shelter (pup-tent sized).
so, well i was going to say i should use a 0.1 near plane only for location=INSHELTER, but you can still see the world, and z fighting at 250 range and 16 bit zbuf...
since shelters are a world object, i can't create a "bigger" scene or model that a bigger near plane will fit in. think of a model of a pup-tent, with one end open. now put the camera inside the pup tent in the center, about 1 foot off the ground. the tent is about 3 feet tall. its pretty tight in there. but a nice effect, like you're stretched out on your sleeping bag, gazing out at the world.
i did notice that z fighting got a little worse when i moved the near plane from 1 to 0.1 to squeeze it inside a shelter.
also i do recall something about using as far a near plane as possible, during my last round of directx optimization research.
sounds like i can rely on 24bit being available, and i can do two (or more) passes if needed.
what about setting the near plane of the 1st pass to the far plane of the second, or a little inside it:
pass 1: near=450 far=10000
pass 2: near = 0.1 or 1, far = 500
that would keep the zbuf resolution of pass 1 higher than near=1 far=10000.
that way you could "stack up" zbufs one behind the other, draw out to any range with multiple passes, and still get a high resolution zbuf for each pass.
i think that may be the answer.
fortunately, it looks like i can count on a 24bit zbuf being available for the primary swap chain, so hopefully I won't have to go to a 2 pass method.